[解決済み] Haskell: lift vs liftIO
2023-06-28 21:56:18
質問
どのような状況で
liftIO
を使うべきでしょうか?私が
ErrorT String IO
を使用している場合、その
lift
関数は、IO アクションを
ErrorT
というように
liftIO
は余分なようです。
どのように解決するのですか?
lift
は、常に前のレイヤーからリフティングします。もし、2番目のレイヤーから持ち上げる必要がある場合は、次のようになります。
lift . lift
といった具合になります。
一方
liftIO
は常にIO層(存在する場合は常にスタックの一番下にある)からリフティングします。そのため、2層以上のモナドがある場合は
liftIO
.
以下のラムダで引数の型を比較します。
type T = ReaderT Int (WriterT String IO) Bool
> :t \x -> (lift x :: T)
\x -> (lift x :: T) :: WriterT String IO Bool -> T
> :t \x -> (liftIO x :: T)
\x -> (liftIO x :: T) :: IO Bool -> T
関連
-
[解決済み] なぜHaskellでは整数の割り算ができないのか?
-
[解決済み] Project Eulerとの速度比較。CとPythonとErlangとHaskellの比較
-
[解決済み] Haskellで大規模設計?[クローズド]
-
[解決済み】Template Haskellの何がそんなに悪いのか?
-
[解決済み] GHCiの複数行コマンド
-
[解決済み] Haskellにおける "リフティング "とは?
-
[解決済み】Haskellの入門編
-
[解決済み] Haskellのマルチコアプログラミングはどうなっているのか?
-
[解決済み] Haskellの初心者向けガイド?[終了しました]
-
[解決済み] Haskell: なぜヘルパー関数に "go" という名前を付けるのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Haskell - Ord aの型は何を意味するのでしょうか?
-
[解決済み] Haskell タプルをリスト化する?
-
[解決済み] ハスケル Where vs. Let
-
[解決済み] <*>は何と呼ばれ、何をするのですか?[クローズド]
-
[解決済み] Data.Voidの不条理な関数って何に使うの?
-
[解決済み] mtl、トランスフォーマー、monads-fd、monadLib、そして選択のパラドックス
-
[解決済み] Lazy I/Oの何がそんなに悪いのか?
-
[解決済み] なぜStringを型クラスのインスタンスにできないのですか?
-
[解決済み] なぜHaskellは "Best Imperative Language "と呼ばれるのか?
-
[解決済み] Haskellの次に学ぶべき言語とは?[クローズド]