与国家设计模式相当的功能编程是什么?或者更具体地说,this Wikipedia example国家设计模式将如何转化为FP?
解决方法
这个模式是使用
State monad的一个例子,一个计算
环境增加了状态的代码.
环境增加了状态的代码.
这是Haskell中的一个实现.
一些助手:
import Control.Monad.Trans.State import Control.Monad.IO.Class import Data.Char
程序的两种运行模式
data Mode = A | B
type StateM a = StateT (Int,Mode) IO a
写函数,一个在StateM上下文中的函数,
根据状态模式改变其行为:
writeName :: String -> StateM () writeName s = do (n,mode) <- get case mode of A -> do liftIO (putStrLn (map toLower s)) put (0,B) B -> do let n' = n + 1 liftIO (putStrLn (map toupper s)) if n' > 1 then put (n',A) else put (n',B)
运行程序,最初在状态A启动状态计算
main = flip runStateT (0,A) $do writeName "Monday" writeName "Tuesday" writeName "Wednesday" writeName "Thursday" writeName "Saturday" writeName "Sunday"
monday TUESDAY WednESDAY thursday SATURDAY SUNDAY
原文地址:https://www.jb51.cc/csharp/95463.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。