Scala でモナドをプログラミングする方法を学ぼうとして、いくつかの問題が発生しました
簡単なコードサンプルを考えると
import Control.Monad
newtype LJ a = LJ { session :: a }
instance Monad LJ where
return s = LJ s
(>>=) m f = f ( session m )
instance Functor LJ where
fmap f m = LJ . f $ session m
type SimpleLJ = LJ String
auth :: String -> String -> SimpleLJ
auth = undefined
readFeed :: String -> SimpleLJ
readFeed = undefined
closeFeed :: String -> SimpleLJ
closeFeed = undefined
proceed = auth "123" "456" >>= readFeed >>= closeFeed
同じことを (scalaz ではなく) Scala で書くにはどうすればよいですか? 私が学んだ限りでは、scala で map/flatMap メソッドを実装するだけで十分ですが、ここで return とは何ですか? forステートメントで自由変数なしでバインディングを行う方法は?