以下に定義されているように、次の関数、foldのタイプを理解する方法を誰かが私に説明できますか?
fun fold func [] base = base
| fold func (x::xs) base = fold func xs (func x base);
私の答えは'c->'a list->'b->' bですが、コードをSMLプログラムにプラグインした後、タイプは実際には('a->' b->'b)であることがわかります。 ->'リスト->'b->'b。
'a list->' b->'bがどこから来ているのかは理解していますが、最初の部分は私を混乱させています。funcが'aと'bの2つの引数を取り、ベースのタイプである'bを返すためですか?
どんな助けでも大歓迎です。