我正在开发一个基本的Haskell程序,其中包含以下代码行:
interact (unwords . (map pigLatin . words) )
然而,将字符串数组传递给我的pigLatin函数后,再转换回字符串时,它总是截断我输入的最后一个单词。例如:
*HaskellPractice> getUserInput
this is broken
histay isway
由于某些原因,它没有打印出来。 我使用的是Mac电脑,在与交互之前,在getUserInput中声明了以下选项:
hSetBuffering stdin LineBuffering
hSetBuffering stdout NoBuffering
我猜这可能是我还没有完全理解的一个小细节。感谢任何帮助和输入! OSFTW 编辑:这是整个程序。
import System.IO
pigLatin :: String -> String
pigLatin word = if ( (head word) `elem`['a', 'e', 'i', 'o', 'u'] )
then (word ++ "way")
else (tail word) ++ [(head word)] ++ "ay"
getUserInput = do
hSetBuffering stdin LineBuffering
hSetBuffering stdout NoBuffering
interact (unwords . (map pigLatin . words) )