scala – 在FP中处理POST的正确方法是什么?
我刚刚开始使用FP而我正在使用
Scala,这可能不是最好的方式,因为如果情况变得艰难,我总能回到命令式的风格.我只是不愿意.我有一个非常具体的问题,指出我对FP的理解存在更广泛的空白.
当Web应用程序正在处理GET请求时,用户需要网站上已存在的信息.应用程序只需要以某种方式处理和格式化数据. FB方式很明确. 当Web应用程序正在处理POST请求时,用户希望更改站点上保存的信息.确实,信息通常不在应用程序变量中,它存在于数据库或平面文件中,但仍然,我感觉我没有正确地使用FP. 是否有处理FP语言中静态数据更新的模式? 我对此的模糊描述是应用程序交给请求和当时的站点状态.应用程序执行其操作并返回新的站点状态.如果自应用程序启动后当前站点状态没有改变,则新状态变为当前状态,并且回复被发送回浏览器(这是我对Clojure风格的暗淡图像);如果当前状态已经改变(通过另一个线程,那么,其他事情发生了…… 解决方法
在纯FP环境中处理此类问题的一种方法是在Haskell中使用monad(例如IO和State),但在Clean中有一些替代方法,如“unique types”(只允许对一个值进行一次引用).
这里没什么可说的:如果你有可变的状态,那么你需要以某种方式限制对它的访问,以这种方式,该状态的每个变化都被认为是该结构的其他部分的“新版本” .例如.您可以将Haskell的IO视为“世界其他地方”,但附带一种时钟.如果您使用IO执行某些操作,则时钟会打勾,并且您再也看不到相同的IO.下次你触摸它时,它是另一个IO,另一个世界,你所做的一切都已经发生了. 在现实生活中,你可以“看到”电影中的事物如何“改变” – 这是必要的观点.但是如果你抓住这部电影,你会看到一串不可变的小图片,没有任何“改变”的痕迹 – 这就是FP视图.两个视图在其自己的上下文中都是有效且“真实”的. 但是,如果你使用Scala,你可以拥有可变状态 – 这里没问题. Scala根本不需要任何特殊处理,使用它没有任何问题(虽然它被认为是“好的风格”,以保持“不纯”的斑点尽可能小). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |