[解決済み] ghciで関数を複数行に渡って定義するには?
2022-04-20 18:29:15
質問
ghciで複数行にまたがる簡単な関数を定義しようとしているのですが、以下のような例があります。
let abs n | n >= 0 = n
| otherwise = -n
今のところ、1行目の後にEnterを押してみています。
Prelude> let abs n | n >= 0 = n
Prelude> | otherwise = -n
<interactive>:1:0: parse error on input `|'
を使おうとしたこともあります。
:{
と
:}
コマンドを使うのですが、なかなかうまくいきません。
Prelude> :{
unknown command ':{'
use :? for help.
LinuxでHaskell 98用のGHC Interactiveバージョン6.6を使っていますが、何が足りないのでしょうか?
どのように解決するのですか?
あなたの例のような)ガードについては、1行にまとめておけばうまくいきます(ガードはスペースを気にしません)。
let abs n | n >= 0 = n | otherwise = -n
引数でパターンマッチするような複数の定義で関数を書きたい場合は、こんな感じ。
fact 0 = 1
fact n = n * fact (n-1)
次に、中括弧を使い、セミコロンで区切って定義します。
let { fact 0 = 1 ; fact n = n * fact (n-1) }
関連
-
[解決済み] エラー haskell: スコープ内にありません。どういう意味ですか?
-
[解決済み] なぜHaskellでは整数の割り算ができないのか?
-
[解決済み] Haskell - Ord aの型は何を意味するのでしょうか?
-
[解決済み] .の違いは何ですか?(ドット)と$(ドルマーク)の違いは何ですか?
-
[解決済み] 読んで学ぶべき良いHaskellのソース [終了しました]。
-
[解決済み] Haskellで副作用がモナドとしてモデル化されているのはなぜですか?
-
[解決済み] なぜ依存型でないのか?
-
[解決済み] Haskellでメモ化?
-
[解決済み] レコードの単一フィールドを割り当て、残りのフィールドはコピーするための省略記法?
-
[解決済み] HaskellとF#の主な違いは何ですか?[クローズド]
最新
-
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: スコープ内にありません。どういう意味ですか?
-
[解決済み] Haskell Preludeの'const'は何のためにあるのか?
-
[解決済み] 解釈の仕方 (Eq a)
-
[解決済み] フリーモナドとは何ですか?
-
[解決済み] 読んで学ぶべき良いHaskellのソース [終了しました]。
-
[解決済み] Haskell における `mod` と `rem` の違い
-
[解決済み] GHCiの複数行コマンド
-
[解決済み] Haskellのマルチコアプログラミングはどうなっているのか?
-
[解決済み] TLSサーバーを実装するためのHsOpenSSL APIの適切な使用法
-
[解決済み] HaskellとF#の主な違いは何ですか?[クローズド]