Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 免费monad扩展玩具示例_Haskell_Monads_Free Monad - Fatal编程技术网

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