▲>>1839116
А мне наоборот после плюсов как-то все более лаконичным кажется, но я так, пару дней назад начал, не очень разбираться в том как оно работает, особенно с производительностью, все эти операции со списками кажутся избыточнее что ли, ведь они все вроде как immutable? Хотя я давно читал что под такое есть свои тайные костыли, которые позволяют минизировать бесполезные копирования вещей, но не уверен.
Но я конечно понимаю что это абсолютно нормально что хаскель это не плюсы и оно другое. Сказать особо нечего по-существу, пока мне он симпатичен, вот лоуайкью быдлокодец для бесконечного списка простых чисел например и сортировка интов, жесть. Я уверен это можно было бы раз в 10 короче сделать.
ldk :: Integer -> Integer -> Integer
ldk n k | k > n = error "divisor should be less than number"
| mod n k == 0 = k
| otherwise = ldk n (k + 1)
ld :: Integer -> Integer
ld n = ldk n 2
isPrime :: Integer -> Bool
isPrime n = ld n == n
primes :: [Integer]
primes = filter isPrime [2..]
minInList :: Ord a => [a] -> a
minInList [] = error "Empty list"
minInList [x] = x
minInList (x:xs) = min x (minInList xs)
removeFst :: Eq a => a -> [a] -> [a]
removeFst m [] = []
removeFst m (x:xs) | x == m = xs
| otherwise = x : removeFst m xs
sortInts :: [Int] -> [Int]
sortInts [] = []
sortInts xs = m : (sortInts (removeFst m xs)) where m = minInList xs