haskell - 有没有办法在 Haskell 的 main 之外接收 IO?
问题描述
这可能是一个愚蠢的问题,但是当我尝试在main
函数之外获取输入时出现错误:
menu2Players :: String -> String -> (String, String)
menu2Players player1 player2 = do
putStrLn("Qual o nome do primeiro jogador?\n")
player1 <- getLine
putStrLn("Qual o nome do segundo jogador?\n")
player2 <- getLine
return (player1, player2)
我得到的错误
IO 动作 'main' 未在模块 'Main' 中定义</p>
我能做些什么来解决这个问题?
解决方案
在 Haskell 中,如果你想在一个函数中做 IO,它需要 return IO
。
menu2Players :: String -> String -> IO (String, String)
menu2Players player1 player2 = do
putStrLn "Qual o nome do primeiro jogador?\n"
player1 <- getLine
putStrLn "Qual o nome do segundo jogador?\n"
player2 <- getLine
return (player1, player2)
为什么你需要返回的细节IO
有点棘手,但你可以在这里了解它:http: //learnyouahaskell.com/input-and-output
推荐阅读
- c++ - 使用 OpenSSL (DTLS) 避免零碎的 ClientHello
- javascript - 在某些反应时删除嵌入
- travis-ci - 如何将 Travis CI 工件从多个作业发布到 GitHub Release
- javascript - 将值修补到子组件时如何将反应形式标记为 Pristine?
- c++ - Win32 ReadProcessMemory API 的问题
- html - 如何在角度中禁用matchip
- apache-spark - Spark Structured Streaming:加入跨越数年的流
- excel - 在 VBA 中的 FIND 中引用单元格
- java - 如何在 Java 中按日期对 ArrayList 的元素进行排序?
- ios - 在 SwiftUI 中设置视图的默认方向