Я изучаю функциональное программирование. Я понял принцип, и теперь я пытаюсь узнать особенности. Этот код должен выяснить, является ли n простым или нет. Я не понимаю, что делает первая строка. Я предлагаю, чтобы целое число было логическим значением в функции (вы называете это?) 'IsPrime'.У меня проблемы с пониманием синтаксиса этого кода. Может ли кто-нибудь объяснить это за строкой?
Линии 2-4 являются своего рода реализацией эквивалента определения, если по модулю n/x равен нулю с отсчетом x, исключая n в качестве фактора.
Пожалуйста, помогите мне с этим. благодарим вас заранее.
код в вопросе:
isPrime :: Integer -> Bool
isPrime n = (factors n == []) -- (1)
where
factors n = [ x | x <- [2..n-1], n `mod` x == 0 ]
Первая строка - это определение типа (подпись) для функции. Это означает, что 'isPrime' - это функция от' Integer' до 'Bool'. Таким образом, он принимает число и возвращает логическое значение, является ли оно простым или нет. Это необязательно, но это хорошая привычка всегда ставить его там. – zerkms
[Здесь] (http://learnyouahaskell.com/chapters) - неплохое место для начала. – molbdnilo
Я голосую, чтобы закрыть этот вопрос как не относящийся к теме, потому что вы не можете изучать новый язык программирования, просто спрашивая о произвольных битах кода. – dfeuer