
это функциональный язык программирования, в основном работающий с выражениями, математическими функциями со многими ограничениями, такими как отсутствие управляющих операторов, никаких модификаций.
свойство:
- статически типизированный
- ленивая оценка (вычисляет математику спора только при вызове)
образец структуры
digit_sum :: Int->Int -> Int
digit_sum a c= if a>0 then digit_sum (div a 10) c+1 else c
main = do
putStrLn("Enter a two digit number1 ")
temp <- getLine
let n = (read temp :: Int)
let count=0
let count2=0
--need to check whether it is actually a two digit number (count )
let count_dig = digit_sum n count
print(count_dig)
temp2 <- getLine
let m = (read temp2 :: Int)
--need to check whether it is actually a two digit number (count )
let count_dig2 = digit_sum m count2
print(count_dig2)
if (mod (n-m) 9 )==0
then print("diff is multiple of 9")
else
print("no")
основной синтаксис
1) -- для комментариев
2) пусть для объявления переменной
3) если () то иначе
4) функция declare :: arg1 -> arg2 -> return
5) получение ввода ‹- getLine
6) напечатать или поставить StrLn
Список свойств
- пусть d = [1,2,3] - — для объявления
- вы можете объединять только целые числа в функции

3) головной и хвостовой доступ

4) доступ к индексу
д !! положение индекса
5) аналогично взять и бросить
6) типизация
let n = (read temp :: Int)
7) минус оператор

8) список вывода/диапазона/условий понимания

9) понимание списка 2 var

10) вложенная функция xs ссылается на внутренний список
xxs относится к внешнему списку

11) фильтрация нужного вам значения

12) карта для всех


встроенные функции, такие как минимум[1,2,3] максимум[2,3,4] реверс[1,2,3], сумма, произведение, элемент
search_list :: [Int]->Int->Int
search_list [x] a = if (x==a) then a else 0
search_list (x:xs) a = if(x == a) then a else search_list xs a
main = do
print("search list ")
let x = [1..3]
-- print(x !! 2)
print(search_list x 5)