Вот учу хаскель есть код который проверяет гипотезу гольдбаха(Что все чётные числа после 4 можно задать сумой 2х простых)
Вот код
func1 :: [a] -> a
func1 (x:xs) = x
hipo :: Int -> (Int, Int)
hipo a = func1 $
filter (\(x,y) -> isPr x && isPr y) $
map (\c -> (c, a - c)) [3,5..a `div` 2]
where
factors a = filter (isFactor a) [2..a-1]
isFactor a b = a `mod` b == 0
isPr 1 = False
isPr a = null $ factors a
mainFunc :: [Int] -> [(Int, Int)]
mainFunc [] = []
mainFunc (x:xs) = hipo x : mainFunc xs
main :: IO ()
main = do
print(mainFunc [6,10..17])
Не понимаю как работает вот этот участок кода
hipo :: Int -> (Int, Int)
hipo a = func1 $
filter (\(x,y) -> isPr x && isPr y) $
map (\c -> (c, a - c)) [3,5..a `div` 2]
where
factors a = filter (isFactor a) [2..a-1]
isFactor a b = a `mod` b == 0
isPr 1 = False
isPr a = null $ factors a
Если кто-то разбирается, можете пожалуйста объяснить что там происходит?