Haskell 免费monad扩展玩具示例
我试图扩展本文中解释的玩具示例 我尝试添加的新内容是Haskell 免费monad扩展玩具示例,haskell,monads,free-monad,Haskell,Monads,Free Monad,我试图扩展本文中解释的玩具示例 我尝试添加的新内容是烦扰输出(String->next)这将需要一些东西并返回String消息。我正在使用liftF函数将struct提升到自由monad级别。请帮我填空,适当的解释是可以理解的 编辑:添加示例 module Main where import FreeToy import Control.Monad.Free program :: Free (Toy String) () program = do output "someth
烦扰输出(String->next)
这将需要一些东西并返回String消息。我正在使用liftF
函数将struct提升到自由monad级别。请帮我填空,适当的解释是可以理解的
编辑:添加示例
module Main where
import FreeToy
import Control.Monad.Free
program :: Free (Toy String) ()
program = do
output "something"
x <- annoyingOutput "something else"
output x
done
main :: IO ()
main = putStrLn $ runToy program
modulemain其中
进口免费玩具
进口管制,不含单子
程序::免费(玩具串)()
程序=执行
输出“某物”
x您可以添加一个您希望如何使用这些函数的示例吗?@Bergi example已添加,请注意,此程序尚未编译,因此请期待一些错误。在该示例中,我看不出恼人输出的类型与普通输出有何不同?您所说的“将获取一些东西并返回字符串消息”是什么意思?runToy$f“blah blah blah blah\n”
中的$
应该被替换runToy(f“blah blah blah blah\n”)
类型是烦扰输出::a->Free(Toy a)字符串;烦扰输出x=liftF$烦扰输出x id
。这意味着正确地运行函数应该可以访问字符串源,您只需在其中不断输入“blah blah blah\n”
您可以添加一个如何使用这些函数的示例吗?@Bergi example已添加,请注意此程序尚未编译,因此,请期待一些bugsI在该示例中没有看到的恼人输出的类型与普通输出有什么不同?您所说的“将获取一些东西并返回字符串消息”是什么意思?runToy$f“blah blah blah blah\n”
中的$
应该被替换runToy(f“blah blah blah blah\n”)
类型是烦扰输出::a->Free(Toy a)字符串;烦扰输出x=liftF$烦扰输出x id
。这意味着run函数应该能够正确地访问字符串源,您只需在其中不断输入它“诸如此类”
module Main where
import FreeToy
import Control.Monad.Free
program :: Free (Toy String) ()
program = do
output "something"
x <- annoyingOutput "something else"
output x
done
main :: IO ()
main = putStrLn $ runToy program