Pull to refresh
16
0
Send message
функциа filter обязана проверить каждый элемент листа который ей передаётся, в то время как takeWhile берет элемент за элементом пока условие выполняется. Функция filter в любом случае никогда не завершит своего выполнения при работе с бесконечными потоками (ведь даже filter (>100) primes никогда не завершается, и понятно почему). Можно рассматривать primes как строго возрастающую функцию, и только благодаря этому свойству takeWhile (<10) primes «фильтрует» список правильно.
Технический Университет Вены. Курс «Функциональное программирование». Слайды на немецком языке, поэтому публиковать не стал (ну и чтобы хабраэффект не создавать). Если кому интересно, все слайды тут: http://www.complang.tuwien.ac.at/knoop/lehre/ws1213/fp185A03/fp185A03_ws1213_121204.pdf
Злоупотребление синонимами типов type приводит к тому, что программирование на Цацкеле становится подобным программированию на каком-нибудь PHP. Используйте же алгебраические типы данных везде, где только можно.

Абсолютно с Вами согласен, что злоупотребление — это плохо, но с другой стороны, врятли бы кто понял что означает эта запись:
newtype Database = Db [([(String,String)],String)]

Я имею ввиду, что если есть составные типы данных (как Database), то хотя бы краткое описание типа должно присутствовать.

Information

Rating
Does not participate
Registered
Activity