Добрый день!
Почему программируя на функциональных языках люди дают имена переменным из одной буквы?
Символ
" ' " часто используют, это производное значение?
Например код монады State
отсюдаАвтор(ы): Евгений Кирпичев aka jkff
Дата: 28.12.2008
Статья рассказывает о том, что такое монады Haskell, приводятся примеры, иллюстрирующие эту концепцию.
instance Monad (State s) where
return a = State dontChangeStateAndReturnA
where dontChangeStateAndReturnA s = (a, s)
-- r1 :: State s a = State (s -> (a, s)) - это вычисление с состоянием
-- p :: a -> State s b = a -> State (s -> (b, s)) - это вычисление
-- с состоянием, зависящее от параметра, вычисляемого r1.
(State r1) >>= p = State passState
where passState s = (res2, finalState)
-- Запускаем первое вычисление, получаем параметр
where (res1, intermediateState) = r1 s
-- Вычисляем по параметру второе вычисление
(State r2) = p res1
-- Запускаем второе вычисление
(res2, finalState) = r2 intermediateState
мне понятнее чем
отсюдаАвтор(ы): Пол Хьюдак, Джон Петерсон, Джозеф Фасел
Дата: 24.04.2007
Данный материал – продолжение начатого в прошлом номере введения в программирование на Haskell для имеющих опыт программирования, по крайней мере, на одном языке, желательно функциональном (даже если это «почти функциональный» язык, такой как ML или Scheme).
data SM a = SM (S -> (a,S)) -- Монадический тип
instance Monad SM where
-- определяет распространение состояния
SM c1 >>= fc2 = SM (\s0 -> let (r,s1) = c1 s0
SM c2 = fc2 r in
c2 s1)
return k = SM (\s -> (k,s))
Что знают другие чего не знаю я?