質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Haskell

Haskellは高い機能性をもった関数型プログラミング言語で、他の手続き型プログラミング言語では難しいとされている関数でも容易に行うことができます。強い静的型付け、遅延評価などに対応しています。

Q&A

解決済

1回答

201閲覧

Haskell の do構文の脱糖を教えてください。

KN2018

総合スコア21

Haskell

Haskellは高い機能性をもった関数型プログラミング言語で、他の手続き型プログラミング言語では難しいとされている関数でも容易に行うことができます。強い静的型付け、遅延評価などに対応しています。

0グッド

0クリップ

投稿2024/11/27 14:51

以下の x の do構文を脱糖したいです。初心者の質問ですみませんが、どうぞ宜しくお願いいたします。

Haskell

1x = do 2 a <- newIORef "abc" 3 b <- readIORef a 4 writeIORef a "xyz" 5 putStrLn =<< readIORef a 6 putStrLn b

以下のように、2つに分けては脱糖できたのですが、1つにまとめる方法が分からなくて悩んでいます。

Haskell

1x1 = newIORef "abc" 2 >>= (\a -> (writeIORef a "xyz" >> readIORef a >>= putStrLn)) 3 4x2 = newIORef "abc" 5 >>= (\a -> (readIORef a >>= putStrLn))

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

定義に従って機械的に脱糖すればよいと思うのですが、何か追加の制約などあるのでしょうか。

haskell

1x = 2 newIORef "abc" >>= (\a -> 3 readIORef a >>= (\b -> 4 writeIORef a "xyz" >> 5 (putStrLn =<< readIORef a) >> 6 putStrLn b))

投稿2024/11/27 21:50

actorbug

総合スコア2433

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KN2018

2024/11/28 03:08

大変ありがとうございます! まったく追加の制約などないのですが、ハスケルにまったく慣れていなくて、勝手に一人でずっと悩んでいました。回答をしてくださったおかげで、ようやく悩みが解けました。とても感謝しております。 時間を割いて回答を書いてくださって、本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問