Get-Programming-with-Haskell_Lesson_3
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[Haskell]] > 本 > [[入門Haskellプログラミング]] > LES...
RIGHT:2019年9月16日 公開
RIGHT:2020年5月14日 更新
#contents
//----- ----- ----- ----- ----- ----- ----- -----
*入門Haskellプログラミング [#idb18288]
#html{{
<table border="0" cellpadding="5"><tr><td valign="top"><a...
<td> </td>
<td valign="top"><a href="https://www.amazon.co.jp/exec/o...
}}
//----- ----- ----- ----- ----- ----- ----- -----
*LESSON 3 [#s3a9bac2]
- Haskellでのラムダ関数の記述
- ラムダ式を使った特別な関数の定義
- レキシカルスコープ
- ラムダ関数によるスコープの作成
//----- ----- ----- ----- ----- ----- ----- -----
** 3.1 ラムダ関数 [#fa1cfdcb]
//----- KEYWORD BEGIN -----
#html{{
<div class="panel panel-danger">
<div class="panel-heading">キーワード</div>
<div class="panel-body">
}}
//----- KEYWORD BEGIN -----
- 「λ」(ラムダ:ギリシャ語の小文字。アルファベットのエル...
- 「\」(バックスラッシュ)
- 「->」(矢印)
//----- KEYWORD END -----
#html{{
</div>
</div>
}}
//----- KEYWORD END -----
書式
\x -> x
-最初にバックスラッシュ「\」を書く。(Windowsパソコンの場...
-続いて、引数を書く。上記の書式では、左側の「x」の部分の...
-続いて、「->」という記号を書く。
-続いて、関数の本体を書く。上記の書式では、右側の「x」の...
本書、p.26の図3-1には間違いがある。
「関数の引数(複数の場合もある)」から伸びている線は、右...
//----------------------------------------
// 2019年9月17日21:33:19
//----------------------------------------
ラムダ関数の書き方の例
Prelude> (\x -> x * 2) 4
8
型を確認してみます。
Prelude> :t (\x -> x)
(\x -> x) :: p -> p
Prelude> :t (\x -> x * 2)
(\x -> x * 2) :: Num a => a -> a
//----- ----- ----- ----- ----- ----- ----- -----
** 3.2 where句 [#tf25ce97]
//----- KEYWORD BEGIN -----
#html{{
<div class="panel panel-danger">
<div class="panel-heading">キーワード</div>
<div class="panel-body">
}}
//----- KEYWORD BEGIN -----
-補助関数
//----- KEYWORD END -----
#html{{
</div>
</div>
}}
//----- KEYWORD END -----
(参考)
- Haskell-補助関数 CapmNetwork http://capm-network.com/?t...
>補助関数とは、関数定義の内部でのみ使用する部分的な関数の...
補助関数を作成することで、複雑で分かりにくいプログラムの...
また、処理毎に分割することはプログラムを再利用しやすく、...
なお、補助関数を内包する親となる関数は「最上位関数」と呼...
Haskellにおける補助関数の定義方法は「let」と「where」の2...
どちらを使用しても問題ありませんが、混在していると可読性...
//----------------------------------------
// 2019年9月28日18:57:11
//----------------------------------------
//----- ----- ----- ----- ----- ----- ----- -----
** 3.3 let式 [#b2473dc8]
(p.29)
>Haskellには、where句の代わりに使用できるlet式と呼ばれる...
*** where句とlet式の違いは? [#e243bdf5]
素朴な疑問です。
-Haskell個人メモ :: 3.関数の構文 - Qiita https://qiita.co...
>''基本''
let 変数/関数 in 式という書式で、ローカルな変数や関数を定...
letは式なので結果を返す。
>''whereとの違い''
whereと似ているが以下の点が異なる。
- どこでも書ける。
- whereではガードをまたぐことが出来るが、letで定義したも...
>好みの問題もあるが、基本的にはwhereを使って、必要な場合...
「ガード」による違いがあるみたいですね。
基本はwhereを使っておくことにしておきたいと思います。
//----------------------------------------
// 2020年5月13日22:58:30
//----------------------------------------
//----- ----- ----- ----- ----- ----- ----- -----
* 補足 [#g3efe400]
プログラミング学習では専門用語が次から次へと出てくるので...
//----- ----- ----- ----- ----- ----- ----- -----
** ラムダ関数 [#hb66e0f1]
ラムダ関数は、別名で「無名関数」とも言ったりする。(言語...
-[[ラムダ関数 無名関数 違い Haskell - Google 検索 >https:...
-[[Haskell-無名関数 CapmNetwork >http://capm-network.com/...
>''無名関数とは''
無名関数とは、一時的に使用するために使い捨てる前提で生成...
Haskellではラムダ式(ラムダ関数)を記述することで無名関数...
>''ラムダ関数(lambda calculus)とは''
ラムダ関数とは、文字ラムダ (λ) を使った式によって表記する...
ラムダ式で記述された関数は、一時的な使い捨ての関数として...
&color(red){なお、ラムダ関数は、匿名関数(無名関数)とも...
//----- ----- ----- ----- ----- ----- ----- -----
*** ラムダ(λ)という記号の由来 [#vee22cf5]
些細なことだけど、素朴な疑問。
なぜ無名関数はラムダ関数という名称が与えられているのか?
そもそも「ラムダ関数」とか「[[ラムダ計算]]」の「ラムダ」...
-[[ラムダ式 語源 - Google 検索 >https://www.google.com/se...
-ラムダ計算とは (ラムダケイサンとは) [単語記事] - ニコニ...
https://dic.nicovideo.jp/a/%E3%83%A9%E3%83%A0%E3%83%80%E8...
>''名前の由来''
ラムダ式に用いられる記号 λ に由来するわけだが、この λ 自...
>''由来がある説''
Rosserという人が1984年に以下のように報告している。
Russell と Whiteheadが、関数を抽象化するときの記号に「^x(...
>''由来なんかない説''
Alonzo Church自身は後年「とにかく記号が必要だったからたま...
-Island Life - λの起源、2つの説
http://blog.practical-scheme.net/shiro/20160826-origin-of...
>λ算法はなぜλなのかについては、次の説が有名である。
>>Alonzo Churchがλ算法を考えた時、RusselとWhiteheadが Pri...
>どうやら、Church自身が両方の説(^説と偶然説)を語っている...
>可能性としては、
-λの選択は偶然だったが、Harald Dicksonへの手紙ではジョー...
-Principia Mathematicaからインスピレーションを得たといえ...
あたりだろうか。
//----- ----- ----- ----- ----- ----- ----- -----
*** ^(キャレット)記号 [#x1abf346]
「^」この記号は何ていう名前なんでしょうか?
-[[サーカムフレックス - Wikipedia >https://ja.wikipedia.o...
>サーカムフレックス(英語: circumflex)または曲折アクセン...
別名、キャレット (caret)、ハット記号 (hat [symbol])。
ただしUnicodeでは、「キャレット」は別の文字 U+028C の名称...
有間隔のサーカムフレックス「ˆ」はASCIIに含まれ、他の文字...
-[[ダイアクリティカルマーク - Wikipedia >https://ja.wikip...
>ダイアクリティカルマーク(英語: diacritical mark)または...
-[[キャレット - Wikipedia >https://ja.wikipedia.org/wiki/...
>キャレット・脱字符号 (英: caret) は、校正で、脱字の挿入...
コンピュータの文字入力画面で、入力文字の挿入位置、つまり...
また、ASCIIの5E「^」(サーカムフレックス)や、数学記号で...
「キャレット」という記号は、正確には下側に位置する山形の...
上側に位置する山形の記号は、「サーカムフレックス」とか「...
^ ←サーカムフレックス(上側に寄っている山形の記号)
‸ ⁁ ←キャレット(下側に寄っている山形の記号)
両方とも単体で見た場合には形がそっくりだから、サーカムフ...
ややこしいですね!
で、ラムダに話を戻すと、最初キャレット(本当はサーカムフ...
それが「ラムダ」という記号が登場するきっかけであり、[[ラ...
特に深い意味はなくて、気まぐれで使っただけみたいなので、...
ただの定義というか、「へー、そういうもんなの?」と軽く受...
//----------------------------------------
// 2020年5月14日13:21:40
//----------------------------------------
//----- ----- ----- ----- ----- ----- ----- -----
* クイックチェック [#f00f351d]
//----- ----- ----- ----- ----- ----- ----- -----
** クイックチェック 3-1 [#zad2c063]
//----- ----- ----- ----- ----- ----- ----- -----
** クイックチェック 3-2 [#va73733f]
次の関数を書き換えて、whereの代わりにラムダ関数を使用して...
#code(haskell){{
doubleDouble x = dubs*2
where dubs = x*2
}}
答
#code(haskell){{
doubleDouble x = (\dubs -> dubs*2) (x*2)
}}
----
この問題の解き方が分からなかった。
-答を見ても理由が分からない。
-本書の説明とこの問題の間を埋める少々の知識が足りないよう...
自分が考えた方法
+ where句で定義されている名前が付けられた関数「dubs = x*2...
++ where dubs = x*2
++ where dubs = (\x -> x * 2)
+ (\x -> x * 2)を1行目のdubsのところに持って行く。
++doubleDouble x = (\x -> x * 2) * 2
ところが、
#code(haskell){{
doubleDouble x = (\x -> x * 2) * 2
}}
だとエラーメッセージが出て動かない。
<interactive>:7:1: error:
? Non type-variable argument in the constraint: Num (...
(Use FlexibleContexts to permit this)
? When checking the inferred type
doubleDouble :: forall a p. (Num a, Num (a -> a))...
確かに「* 2」は引数としては不適切であるようなことは、何と...
剥き出しの「* 2」では数値でもないし、関数でもないと思うの...
そこで剥き出しの「* 2」を「(* 2)」という具合にカッコでく...
Prelude> :t (* 2)
(* 2) :: Num a => a -> a
つまり、(* 2)は何かを2倍にする関数として扱われるはずだ。
#code(haskell){{
doubleDouble x = (\x -> x * 2) (* 2)
}}
これもエラーメッセージが出て動かない。
<interactive>:10:1: error:
? Non type-variable argument in the constraint: Num (...
(Use FlexibleContexts to permit this)
? When checking the inferred type
doubleDouble :: forall a p. (Num a, Num (a -> a))...
doubleDouble x = ...(関数の本体)
とイコールの右辺で引数xが使われてない形になっているためだ...
そこまでは何となく推察してみたけど、「(x*2)」という具合で...
#code(haskell){{
doubleDouble x = (\x -> x * 2) (* 2) x
}}
これもエラーメッセージが出て動かない。
<interactive>:11:1: error:
? Non type-variable argument in the constraint: Num (...
(Use FlexibleContexts to permit this)
? When checking the inferred type
doubleDouble :: forall a. (Num a, Num (a -> a)) =...
「(* 2) x」の部分はある数値xを2倍する関数として、構文的に...
Prelude> dubs x = (* 2) x
Prelude> dubs 2
4
Prelude> :t dubs
dubs :: Num a => a -> a
「(* 2) x」を「(x * 2)」と書くのは、前に出してある演算子...
ここら辺が推測の域を出ていなくて、よく理解できない。
それに本書の説明では、まだカリー化の説明が登場していない...
途中に関数を置いて、2ステップでwhere句を除去する方法は良...
この謎を解決するには、
+ 著者にメールなどで聞くか、
+ 検索して調べるか、
+ 今後の宿題としてもう少し学習が進んだ後にもう一度考えて...
しかないだろうか?
----
そこでHaskellのラムダ関数について、他の説明を参照して、知...
-Haskell ラムダ関数 - Google 検索
https://www.google.com/search?q=Haskell+%E3%83%A9%E3%83%A...
-Haskell-無名関数 CapmNetwork
http://capm-network.com/?tag=Haskell-%E7%84%A1%E5%90%8D%E...
-関数 - ウォークスルー Haskell
http://walk.northcol.org/haskell/functions/
-Haskell ラムダ 超入門 - Qiita
https://qiita.com/7shi/items/1345bf32003faff435cb
-もしRubyistがHaskellを学んだら(19) ラムダ式と畳み込み --...
https://www.xmisao.com/2014/01/14/haskell-learning-19.html
-Haskellのラムダ式 - mrsekut-p
https://scrapbox.io/mrsekut-p/Haskell%E3%81%AE%E3%83%A9%E...
-Haskell Language - ラムダ式 | haskell Tutorial
https://riptutorial.com/ja/haskell/example/16098/%E3%83%A...
↓この連載記事は一度全部に目を通しておいた方がいいかも。
-Haskell 超入門 - Qiita
https://qiita.com/7shi/items/145f1234f8ec2af923ef
単純には、Haskellの問題じゃなくて、ラムダ関数(無名関数)...
高階関数の扱い方とかが何かズレているのかもしれない。
//----- ----- ----- ----- ----- ----- ----- -----
** クイックチェック 3-3 [#qbf249e6]
//----- ----- ----- ----- ----- ----- ----- -----
* 練習問題 [#g7632c8e]
//----- ----- ----- ----- ----- ----- ----- -----
** Q3-1 [#h38af5b4]
//----- ----- ----- ----- ----- ----- ----- -----
** Q3-2 [#t159df1c]
終了行:
[[Haskell]] > 本 > [[入門Haskellプログラミング]] > LES...
RIGHT:2019年9月16日 公開
RIGHT:2020年5月14日 更新
#contents
//----- ----- ----- ----- ----- ----- ----- -----
*入門Haskellプログラミング [#idb18288]
#html{{
<table border="0" cellpadding="5"><tr><td valign="top"><a...
<td> </td>
<td valign="top"><a href="https://www.amazon.co.jp/exec/o...
}}
//----- ----- ----- ----- ----- ----- ----- -----
*LESSON 3 [#s3a9bac2]
- Haskellでのラムダ関数の記述
- ラムダ式を使った特別な関数の定義
- レキシカルスコープ
- ラムダ関数によるスコープの作成
//----- ----- ----- ----- ----- ----- ----- -----
** 3.1 ラムダ関数 [#fa1cfdcb]
//----- KEYWORD BEGIN -----
#html{{
<div class="panel panel-danger">
<div class="panel-heading">キーワード</div>
<div class="panel-body">
}}
//----- KEYWORD BEGIN -----
- 「λ」(ラムダ:ギリシャ語の小文字。アルファベットのエル...
- 「\」(バックスラッシュ)
- 「->」(矢印)
//----- KEYWORD END -----
#html{{
</div>
</div>
}}
//----- KEYWORD END -----
書式
\x -> x
-最初にバックスラッシュ「\」を書く。(Windowsパソコンの場...
-続いて、引数を書く。上記の書式では、左側の「x」の部分の...
-続いて、「->」という記号を書く。
-続いて、関数の本体を書く。上記の書式では、右側の「x」の...
本書、p.26の図3-1には間違いがある。
「関数の引数(複数の場合もある)」から伸びている線は、右...
//----------------------------------------
// 2019年9月17日21:33:19
//----------------------------------------
ラムダ関数の書き方の例
Prelude> (\x -> x * 2) 4
8
型を確認してみます。
Prelude> :t (\x -> x)
(\x -> x) :: p -> p
Prelude> :t (\x -> x * 2)
(\x -> x * 2) :: Num a => a -> a
//----- ----- ----- ----- ----- ----- ----- -----
** 3.2 where句 [#tf25ce97]
//----- KEYWORD BEGIN -----
#html{{
<div class="panel panel-danger">
<div class="panel-heading">キーワード</div>
<div class="panel-body">
}}
//----- KEYWORD BEGIN -----
-補助関数
//----- KEYWORD END -----
#html{{
</div>
</div>
}}
//----- KEYWORD END -----
(参考)
- Haskell-補助関数 CapmNetwork http://capm-network.com/?t...
>補助関数とは、関数定義の内部でのみ使用する部分的な関数の...
補助関数を作成することで、複雑で分かりにくいプログラムの...
また、処理毎に分割することはプログラムを再利用しやすく、...
なお、補助関数を内包する親となる関数は「最上位関数」と呼...
Haskellにおける補助関数の定義方法は「let」と「where」の2...
どちらを使用しても問題ありませんが、混在していると可読性...
//----------------------------------------
// 2019年9月28日18:57:11
//----------------------------------------
//----- ----- ----- ----- ----- ----- ----- -----
** 3.3 let式 [#b2473dc8]
(p.29)
>Haskellには、where句の代わりに使用できるlet式と呼ばれる...
*** where句とlet式の違いは? [#e243bdf5]
素朴な疑問です。
-Haskell個人メモ :: 3.関数の構文 - Qiita https://qiita.co...
>''基本''
let 変数/関数 in 式という書式で、ローカルな変数や関数を定...
letは式なので結果を返す。
>''whereとの違い''
whereと似ているが以下の点が異なる。
- どこでも書ける。
- whereではガードをまたぐことが出来るが、letで定義したも...
>好みの問題もあるが、基本的にはwhereを使って、必要な場合...
「ガード」による違いがあるみたいですね。
基本はwhereを使っておくことにしておきたいと思います。
//----------------------------------------
// 2020年5月13日22:58:30
//----------------------------------------
//----- ----- ----- ----- ----- ----- ----- -----
* 補足 [#g3efe400]
プログラミング学習では専門用語が次から次へと出てくるので...
//----- ----- ----- ----- ----- ----- ----- -----
** ラムダ関数 [#hb66e0f1]
ラムダ関数は、別名で「無名関数」とも言ったりする。(言語...
-[[ラムダ関数 無名関数 違い Haskell - Google 検索 >https:...
-[[Haskell-無名関数 CapmNetwork >http://capm-network.com/...
>''無名関数とは''
無名関数とは、一時的に使用するために使い捨てる前提で生成...
Haskellではラムダ式(ラムダ関数)を記述することで無名関数...
>''ラムダ関数(lambda calculus)とは''
ラムダ関数とは、文字ラムダ (λ) を使った式によって表記する...
ラムダ式で記述された関数は、一時的な使い捨ての関数として...
&color(red){なお、ラムダ関数は、匿名関数(無名関数)とも...
//----- ----- ----- ----- ----- ----- ----- -----
*** ラムダ(λ)という記号の由来 [#vee22cf5]
些細なことだけど、素朴な疑問。
なぜ無名関数はラムダ関数という名称が与えられているのか?
そもそも「ラムダ関数」とか「[[ラムダ計算]]」の「ラムダ」...
-[[ラムダ式 語源 - Google 検索 >https://www.google.com/se...
-ラムダ計算とは (ラムダケイサンとは) [単語記事] - ニコニ...
https://dic.nicovideo.jp/a/%E3%83%A9%E3%83%A0%E3%83%80%E8...
>''名前の由来''
ラムダ式に用いられる記号 λ に由来するわけだが、この λ 自...
>''由来がある説''
Rosserという人が1984年に以下のように報告している。
Russell と Whiteheadが、関数を抽象化するときの記号に「^x(...
>''由来なんかない説''
Alonzo Church自身は後年「とにかく記号が必要だったからたま...
-Island Life - λの起源、2つの説
http://blog.practical-scheme.net/shiro/20160826-origin-of...
>λ算法はなぜλなのかについては、次の説が有名である。
>>Alonzo Churchがλ算法を考えた時、RusselとWhiteheadが Pri...
>どうやら、Church自身が両方の説(^説と偶然説)を語っている...
>可能性としては、
-λの選択は偶然だったが、Harald Dicksonへの手紙ではジョー...
-Principia Mathematicaからインスピレーションを得たといえ...
あたりだろうか。
//----- ----- ----- ----- ----- ----- ----- -----
*** ^(キャレット)記号 [#x1abf346]
「^」この記号は何ていう名前なんでしょうか?
-[[サーカムフレックス - Wikipedia >https://ja.wikipedia.o...
>サーカムフレックス(英語: circumflex)または曲折アクセン...
別名、キャレット (caret)、ハット記号 (hat [symbol])。
ただしUnicodeでは、「キャレット」は別の文字 U+028C の名称...
有間隔のサーカムフレックス「ˆ」はASCIIに含まれ、他の文字...
-[[ダイアクリティカルマーク - Wikipedia >https://ja.wikip...
>ダイアクリティカルマーク(英語: diacritical mark)または...
-[[キャレット - Wikipedia >https://ja.wikipedia.org/wiki/...
>キャレット・脱字符号 (英: caret) は、校正で、脱字の挿入...
コンピュータの文字入力画面で、入力文字の挿入位置、つまり...
また、ASCIIの5E「^」(サーカムフレックス)や、数学記号で...
「キャレット」という記号は、正確には下側に位置する山形の...
上側に位置する山形の記号は、「サーカムフレックス」とか「...
^ ←サーカムフレックス(上側に寄っている山形の記号)
‸ ⁁ ←キャレット(下側に寄っている山形の記号)
両方とも単体で見た場合には形がそっくりだから、サーカムフ...
ややこしいですね!
で、ラムダに話を戻すと、最初キャレット(本当はサーカムフ...
それが「ラムダ」という記号が登場するきっかけであり、[[ラ...
特に深い意味はなくて、気まぐれで使っただけみたいなので、...
ただの定義というか、「へー、そういうもんなの?」と軽く受...
//----------------------------------------
// 2020年5月14日13:21:40
//----------------------------------------
//----- ----- ----- ----- ----- ----- ----- -----
* クイックチェック [#f00f351d]
//----- ----- ----- ----- ----- ----- ----- -----
** クイックチェック 3-1 [#zad2c063]
//----- ----- ----- ----- ----- ----- ----- -----
** クイックチェック 3-2 [#va73733f]
次の関数を書き換えて、whereの代わりにラムダ関数を使用して...
#code(haskell){{
doubleDouble x = dubs*2
where dubs = x*2
}}
答
#code(haskell){{
doubleDouble x = (\dubs -> dubs*2) (x*2)
}}
----
この問題の解き方が分からなかった。
-答を見ても理由が分からない。
-本書の説明とこの問題の間を埋める少々の知識が足りないよう...
自分が考えた方法
+ where句で定義されている名前が付けられた関数「dubs = x*2...
++ where dubs = x*2
++ where dubs = (\x -> x * 2)
+ (\x -> x * 2)を1行目のdubsのところに持って行く。
++doubleDouble x = (\x -> x * 2) * 2
ところが、
#code(haskell){{
doubleDouble x = (\x -> x * 2) * 2
}}
だとエラーメッセージが出て動かない。
<interactive>:7:1: error:
? Non type-variable argument in the constraint: Num (...
(Use FlexibleContexts to permit this)
? When checking the inferred type
doubleDouble :: forall a p. (Num a, Num (a -> a))...
確かに「* 2」は引数としては不適切であるようなことは、何と...
剥き出しの「* 2」では数値でもないし、関数でもないと思うの...
そこで剥き出しの「* 2」を「(* 2)」という具合にカッコでく...
Prelude> :t (* 2)
(* 2) :: Num a => a -> a
つまり、(* 2)は何かを2倍にする関数として扱われるはずだ。
#code(haskell){{
doubleDouble x = (\x -> x * 2) (* 2)
}}
これもエラーメッセージが出て動かない。
<interactive>:10:1: error:
? Non type-variable argument in the constraint: Num (...
(Use FlexibleContexts to permit this)
? When checking the inferred type
doubleDouble :: forall a p. (Num a, Num (a -> a))...
doubleDouble x = ...(関数の本体)
とイコールの右辺で引数xが使われてない形になっているためだ...
そこまでは何となく推察してみたけど、「(x*2)」という具合で...
#code(haskell){{
doubleDouble x = (\x -> x * 2) (* 2) x
}}
これもエラーメッセージが出て動かない。
<interactive>:11:1: error:
? Non type-variable argument in the constraint: Num (...
(Use FlexibleContexts to permit this)
? When checking the inferred type
doubleDouble :: forall a. (Num a, Num (a -> a)) =...
「(* 2) x」の部分はある数値xを2倍する関数として、構文的に...
Prelude> dubs x = (* 2) x
Prelude> dubs 2
4
Prelude> :t dubs
dubs :: Num a => a -> a
「(* 2) x」を「(x * 2)」と書くのは、前に出してある演算子...
ここら辺が推測の域を出ていなくて、よく理解できない。
それに本書の説明では、まだカリー化の説明が登場していない...
途中に関数を置いて、2ステップでwhere句を除去する方法は良...
この謎を解決するには、
+ 著者にメールなどで聞くか、
+ 検索して調べるか、
+ 今後の宿題としてもう少し学習が進んだ後にもう一度考えて...
しかないだろうか?
----
そこでHaskellのラムダ関数について、他の説明を参照して、知...
-Haskell ラムダ関数 - Google 検索
https://www.google.com/search?q=Haskell+%E3%83%A9%E3%83%A...
-Haskell-無名関数 CapmNetwork
http://capm-network.com/?tag=Haskell-%E7%84%A1%E5%90%8D%E...
-関数 - ウォークスルー Haskell
http://walk.northcol.org/haskell/functions/
-Haskell ラムダ 超入門 - Qiita
https://qiita.com/7shi/items/1345bf32003faff435cb
-もしRubyistがHaskellを学んだら(19) ラムダ式と畳み込み --...
https://www.xmisao.com/2014/01/14/haskell-learning-19.html
-Haskellのラムダ式 - mrsekut-p
https://scrapbox.io/mrsekut-p/Haskell%E3%81%AE%E3%83%A9%E...
-Haskell Language - ラムダ式 | haskell Tutorial
https://riptutorial.com/ja/haskell/example/16098/%E3%83%A...
↓この連載記事は一度全部に目を通しておいた方がいいかも。
-Haskell 超入門 - Qiita
https://qiita.com/7shi/items/145f1234f8ec2af923ef
単純には、Haskellの問題じゃなくて、ラムダ関数(無名関数)...
高階関数の扱い方とかが何かズレているのかもしれない。
//----- ----- ----- ----- ----- ----- ----- -----
** クイックチェック 3-3 [#qbf249e6]
//----- ----- ----- ----- ----- ----- ----- -----
* 練習問題 [#g7632c8e]
//----- ----- ----- ----- ----- ----- ----- -----
** Q3-1 [#h38af5b4]
//----- ----- ----- ----- ----- ----- ----- -----
** Q3-2 [#t159df1c]
ページ名: