一次又一次,我读了长期effectful,但我还是无法给予的是什么意思的明确定义.我认为正确的上下文是effectful 计算,但我也看到了长期effectful 值)
我曾经认为有效的手段有副作用.但在Haskell中没有副作用(除了某种程度上IO).整个地方仍然有效的计算.
然后我读到monad用于创建有效的计算.我可以在StateMonad 的背景下理解这一点.但我没有看到Maybemonad中有任何副作用.一般来说,在我看来,Monads包含一个类似函数的东西更容易看到产生副作用比Monads只包装一个值.
谈到Applicative仿函数,我更加迷失.我总是看到applicative functor作为一个map带有多个参数的函数的方法.我在这里看不到任何副作用.或者是有之间的差异effectful并用的效果?
我试图用Agda中的自然数字解析一个字符串.例如,结果stringListTo? "1,2,3"应该是Just (1 ? 2 ? 3 ? [])
我当前的代码不是很正确或任何方式都很好,但它的工作原理.但是它返回类型:
Maybe (List (Maybe ?))
问题是:
如何以stringListTo?一种很好的方式实现该功能(与我的代码相比); 它应该有类型Maybe (List ?)
(可选,不重要)如何将类型转换Maybe (List (Maybe ?))为Maybe (List ?)?
我的代码:
charTo? : Char ? Maybe ?
charTo? '0' = just 0
charTo? '1' = just 1
charTo? '2' = just 2
charTo? '3' = just 3
charTo? '4' = just 4
charTo? '5' = just 5
charTo? '6' = just 6
charTo? '7' = …Run Code Online (Sandbox Code Playgroud)