haskell初心者です。
合成関数(.)について質問があります。
(.)関数の引数はghciの:tで調べると
(.) :: (b -> c) -> (a -> b) -> a -> c
と出てきます。
これは、第一引数に一引数関数、第二引数に一引数関数、第三引数に定数関数を取る、という解釈で合っていると思います。
また、ghciで次の式
((+) . (+3)) 5 500
を評価しすると
508が出力されます、エラーはありません。
なぜ二引数関数の(+)を(.)の第一引数に入れてもエラーがでないのでしょうか。
おそらく僕のカリー化や合成関数に関する基礎知識が浅いためこのような疑問が生まれたのだと思います。できればこれらの知識を絡めた回答を希望しますが、わがままは言えません。
よろしくお願いします。
No.2
- 回答日時:
この場合は関数 (というよりは型だから「関数型」というべきか?) になります.
ああ, 考えてみたら「第一引数に一引数関数、第二引数に一引数関数、第三引数に定数関数を取る、という解釈」がおかしいんだ. 合成した結果は関数なんだから, 本当は
(b -> c) -> (a -> b) -> (a -> c)
と読まなきゃならない.
No.3
- 回答日時:
補足です.
c のみならず, a や b も関数型となることはあり得ます. 意味があるかどうかはさておき, 2つの引数に共通する型変数 b を同じものにできるなら「型付け」における問題は発生しません.
例えば
foo :: Int -> Int -> Int
bar :: (Int -> Int) -> Int -> Int
のとき (bar . foo) という合成が可能で, その型は
(bar . foo) :: Int -> Int -> Int
となります.
ちょ~ニッチな世界だけど, 組み合わせ論理を知っていると幸せになれる... かなぁ?
回答ありがとうございます。
もう一度一つ目の回答を考えるとなんとなくわかりました。
それと回答に挙がっている「組み合わせ理論」というのは数学における「組み合わせ理論」でしょうか。
No.4
- 回答日時:
えぇと, 「組み合わせ理論」じゃなくって「組み合わせ論理」ね. 英語だと Combinatory Logic.
参考URL:http://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%B3% …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux bash環境でのエラー対応をお願い致します。 1 2022/11/26 17:41
- 統計学 直線の傾き(回帰係数)から相関係数を計算できるのでしょうか? 2 2022/09/16 19:28
- Excel(エクセル) エクセルでエラーを無視して一番左側のセルの値を返したい 2 2023/07/27 13:06
- Visual Basic(VBA) Excel のユーザー定義関数でソルバーが動作しない 1 2022/09/05 19:51
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- JavaScript useStateの分割代入について 1 2022/05/06 10:02
- C言語・C++・C# c言語 配列とポインタについて 3 2023/02/09 22:53
- Visual Basic(VBA) VBAでfunctionを利用しようとしたときに「引数は省略できません」というエラーが出ます 1 2022/10/15 16:30
- Excel(エクセル) エクセル 関数について質問です。 2 2022/10/03 11:14
- C言語・C++・C# C言語初心者です、、、お助けください 2 2023/03/14 20:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C# try-catch でcatchに飛ばす方法
-
CreateObject("Excel.Applicati...
-
ASP.NetでのActiveX
-
ASP.NETで使用しているJavascri...
-
winsock通信時エラーの回避
-
エラー 'ASP 0115' について
-
oracleを利用できません。(glob...
-
07弥生会計のエラー
-
VBA RemoveDuplicatesで「アプ...
-
ASPプログラミングでADODB.C...
-
FileCopy時のエラー
-
エラー内容について
-
EXECLマクロでshapeがグルーフ...
-
隠しフィールドをVBScriptでの...
-
GridView表示の高速化
-
ソケット通信で同時受信の制限?
-
UpdatePanel と GridViewについ...
-
ASPへのデータの受け渡しについて
-
エクセルVBA 宣言Dimの場所
-
ASPからASPを呼び出す方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C# try-catch でcatchに飛ばす方法
-
FileCopy時のエラー
-
エラー 'ASP 0115' について
-
EXECLマクロでshapeがグルーフ...
-
CreateObject("Excel.Applicati...
-
VBSからPDFファイルを開きたい...
-
winsock通信時エラーの回避
-
ASP.NET C# ローカルのパスが呼...
-
Outlookで添付ファイルの有無を...
-
エラー 'ASP 0115'
-
WinXPProにVC++6.0をイン...
-
fopenでエラーとなる
-
IIS7.5の設定の仕方
-
エラー内容について
-
ASPプログラミングでADODB.C...
-
ASP.NETで使用しているJavascri...
-
ASPからWscriptを利用して外部...
-
オブジェクト生成エラー
-
VB6でRDOに接続できない
-
オラクル接続をopenしようとす...
おすすめ情報