Немного про стиль кодирования на Хаскеле.
Тут случилась ветка с критикой Хаскеля и разбором стиля кодирования.
К ней я и хочу добавить несколько слов.
( Collapse )
К ней я и хочу добавить несколько слов.
( Collapse )
By logging in to LiveJournal using a third-party service you accept LiveJournal's User agreement
map f (x:xs) = f x :map f xsC(xs) < C((x:xs)). Что делать с взаимной рекурсией, непонятно.
ack Z n = S n -- ack 0 n = n+1 ack (S m') Z = ack m (S Z) -- ack m 0 = ack (m-1) 1 ack m@(S m') n@(S n') = ack m' (ack m n') -- ack m n = ack (m-1) (ack m (n-1))Здесь, по идее, есть порядок. Первый аргумент ack всегда уменьшается, если не равен Z. Такой же порядок должен быть и у функций с аккумулятором - аккумуляторы только увеличиваются, остальные аргументы увеличиваться не могут.