3

PureScript の効果について学び始めたばかりで、EXCEPTION 効果を持つ関数を作ろうとして行き詰っています。

lengthGt5 :: forall eff. String -> Eff (err :: EXCEPTION | eff) String
lengthGt5 a = if (length a <= 5)
              then throwException $ error "Word is not the right length!"
              else a

main = do
  word <- catchException handleShortWord (lengthGt5 "test")
  log word

  where
    handleShortWord err = do
      log (message err)
      return "Defaut::casserole"

これを実行しようとすると、次のエラーが表示されます

タイプが一致しませんでした

    String

  with type

    Eff
      ( err :: EXCEPTION
      | eff0
      )
      String

例外でない場合、 lengthGt5 は Eff にラップされた String を返す必要があることは理解していますが、 value の周りに「空のエフェクト ラッパー」を作成する方法がわかりませんa。私はこれについて正しく考えていますか?

4

1 に答える 1