Comments 5
Блин, да это Haskell головного мозга :)
Сложно понять цель статьи и её аудиторию.
Можно было написать хорошую статью про то, как вводяться числа через нумералы Черча или по Пеано, но нет зачем-то прикрутили Haskell.
Посылка, что пропали из языка числа, конечно, хороша; но что делать, если языка пропадут списки, или, что еще лучше, алгебраические типы данных; в этом случае Haskell уже не помощник :)
Теперь об аудитории, c одной стороны автор пытается по ходу объяснять очевидные вещи, следовательно, можно предположить о том, что он пишет для людей незнакомых с Haskell
С другой стороны, без объяснения, что такое бесточечный стиль, понять следующее сложно
Да и с читаемостью проблемы, особенно с
P.S. Я сам идиот — habrahabr.ru/blogs/personal/43855/
Сложно понять цель статьи и её аудиторию.
Можно было написать хорошую статью про то, как вводяться числа через нумералы Черча или по Пеано, но нет зачем-то прикрутили Haskell.
Посылка, что пропали из языка числа, конечно, хороша; но что делать, если языка пропадут списки, или, что еще лучше, алгебраические типы данных; в этом случае Haskell уже не помощник :)
Теперь об аудитории, c одной стороны автор пытается по ходу объяснять очевидные вещи, следовательно, можно предположить о том, что он пишет для людей незнакомых с Haskell
data [a] = [] | a:[a] — определение списка, [] и: — конструкторы, [] — имя типа
С другой стороны, без объяснения, что такое бесточечный стиль, понять следующее сложно
incN = MkN.(():).toList;
Да и с читаемостью проблемы, особенно с
data () = ()
P.S. Я сам идиот — habrahabr.ru/blogs/personal/43855/
+2
P.S. убило :)
это SQL головного мозга?
это SQL головного мозга?
0
Посылка, что пропали из языка числа, конечно, хороша; но что делать, если языка пропадут списки, или, что еще лучше, алгебраические типы данных; в этом случае Haskell уже не помощник :)
Достаточно чтобы в языке остались лямбда-абстракции, т.е. функции высшего порядка.
+1
Если пропадут списки — не беда, их можно декларировать заново (что, собственно, и было сделано). Не станет функций вроде flip, ($) или map — тоже. Но, действительно, исчезновение алгебраических типов, как возможности описания новых типов, доставит гораздо больше хлопот :)
Впрочем, лямбда-абстракция всегда с нами. Вот только к вы предложите использовать её, ведь предложенный Черчем алгоритм построения чисел не удовлетворяет требованиям типизированного лямбда-исчисления, ведь нет единой для всех нумералов сигнатуры, построенной только с использованием конструктора (->).
P.S. Цель статьи и её аудитория сложно понять, как сказал shai_xylyd двумя постами выше, и мне также. Однако, где-то полгода-год назад мне бы подобная статья понравилась. Я тогда вообще с любопытством читал о всяком разном в таком духе. Посему я думаю, что может найтись кто-то, кому статья понравится.
Впрочем, лямбда-абстракция всегда с нами. Вот только к вы предложите использовать её, ведь предложенный Черчем алгоритм построения чисел не удовлетворяет требованиям типизированного лямбда-исчисления, ведь нет единой для всех нумералов сигнатуры, построенной только с использованием конструктора (->).
P.S. Цель статьи и её аудитория сложно понять, как сказал shai_xylyd двумя постами выше, и мне также. Однако, где-то полгода-год назад мне бы подобная статья понравилась. Я тогда вообще с любопытством читал о всяком разном в таком духе. Посему я думаю, что может найтись кто-то, кому статья понравится.
0
А зачем приплетать списки, если и без них всё хорошо через те же аксиомы Пеано?
data Nat = Zero | Succ Nat deriving (Eq, Show)
instance Num Nat where
Zero + a = a
a + Zero = a
a + Succ b = Succ (a + b)
Zero * a = Zero
a * Zero = Zero
a * Succ b = a*b + a
abs = id
signum Zero = 0
signum _ = 1
fromInteger 0 = Zero
fromInteger (x+1) = Succ (fromInteger x)
+1
Sign up to leave a comment.
Articles
Change theme settings
Реализация целочисленной арифметики на Haskell