我尝试编写以下Haskell函数,但在Scala中(使用scalaz):
ghci>let f = do { x <- getChar; _ <- putChar(x); return () }
ghci>f -- then type '4'
44ghci>
这是我尝试的内容:
def showInput: IO[Unit] = for {
c <- getChar
_ <- putChar(c)
} yield ()
然后我跑了它:
scala> net.repl.Foo.showInput
res2: scalaz.effect.IO[Unit] = scalaz.effect.IOFunctions$$anon$6@73e3ae3a
运行该方法后,我输入了1234
。但是,我必须在输出(enter
)之前按1
:
scala> res2.unsafePerformIO
1
如何编写上面的scalaz函数以使其与Haskell函数的行为相同?