do
ブロックの内部では、モナドからその内容を「抽出」して描画できることを知っています。たとえば、署名付きの関数がある場合:
myFunction :: MyReader (Set Int)
do
ブロック内でこれを行うことができます:
mySet <- myFunction
これにより、Set Int
私が望むものが得られます。ただし、引数を取るように関数を変更すると、次のようになります。
myFunction :: Int -> MyReader (Set Int)
やりたいことができなくなった:
myFunction' <- myFunction
これはエラーでコンパイルに失敗しCouldn't match expected type
、Probable cause: ‘myFunction'’ is applied to too few arguments
. このようなことを試みることは、構文的にも正しくありません:
myFunction' x <- myFunction x
myFunction'
私はタイプになりたいですInt -> Set Int
。私は自分がやりたいことをする方法を理解できないか、どこにも見つけられません。誰でも助けてもらえますか?