为什么我们需要Control.Lens.Reified?有什么理由我不能Lens
直接放入容器吗?reify
无论如何,意味着什么?
我在设计Haskell sequence
函数的反函数时遇到了一些麻烦,Hoogle告诉我该函数尚不存在.这是它的行为方式:
ghci> sequence [Just 7, Just 8, Just 9]
Just [7,8,9]
ghci> sequence [getLine, getLine, getLine]
hey
there
stack exchange
["hey","there","stack exchange"] :: IO [String]
Run Code Online (Sandbox Code Playgroud)
我的问题是制作这样的函数:
unsequence :: (Monad m) => m [a] -> [m a]
Run Code Online (Sandbox Code Playgroud)
所以它的行为如下:
ghci> unsequence (Just [7, 8, 9])
[Just 7, Just 8, Just 9]
ghci> sequence getLine
hey
['h','e','y'] :: [IO Char] --(This would actually cause an error, but hey-ho.)
Run Code Online (Sandbox Code Playgroud)
我实际上并不知道这是否可能,因为我会在某些时候逃避monad,但我已经开始了,虽然我不知道如何为这个递归函数设置断点:
unsequence m = (m >>= return . head) : unsequence (m >>= …
Run Code Online (Sandbox Code Playgroud)