2 single: 関数型プログラミング; はじめに
10 関数型プログラミング (FP) の概念についてより詳しく学びます。
19 pair: 関数型プログラミング; 純粋関数
25 代入演算子により、関数への参照で渡される元データを処理する代わりに、
26 変数の値 (リストとオブジェクト)をコピーして新しい変数を作成することで
27 純粋関数 (状態を変更しない関数) を作成できます。
36 aList2 = square(aList)
47 return a1 # 新しいリストを返します。
68 pair: 関数型プログラミング; 第一級関数
73 Ring の関数は第一級オブジェクトです。関数を仮引数として渡したり、
76 例えば、関数名を "関数名" または :関数名 のようにリテラルとして記述することで、関数の渡したり、返せます。
78 関数名を有する変数を用いると、関数を渡したり返せます。
80 Call 命令で関数名を有する変数から関数を呼び出します。
86 [関数の返値を代入するための変数] = Call 変数名([仮引数])
93 see "before test2()" + nl
95 see "after test2()" + nl
99 see "Message from test!" + nl
103 See "Message from test2!" + nl
117 pair: 関数型プログラミング; 高階関数
122 高階関数は、ほかの関数を仮引数として扱う関数です。
132 see "Message from the test function!" + nl
144 Message from the test function!
145 Message from the test function!
146 Message from the test function!
147 Message from the test function!
148 Message from the test function!
151 pair: 関数型プログラミング; 無名関数と入れ子関数
156 無名関数は、名前を持たない関数であり、ほかの関数へ仮引数として渡したり、変数へ格納できます。
162 Func [仮引数] { [ステートメント] }
170 see "Sum : " + (x+y) + nl
175 times(3, func { see "hello world" + nl } )
188 f2( func { see "Message from f1" + nl } )
211 Map (aList , func x {
216 Map(aList, :myfilter )
218 aList = [11,12,13,14]
219 Map (aList , func x {
258 pair: 関数型プログラミング; 等式関数
263 if 関数 = 関数、または演算子‘=’や‘!=’を用いずにテストできます (この機能は関数の等価性、あるいは Equality of functions とも言います)。
269 f1 = func { see "hello" + nl }
271 f2 = func { see "how are you?" + nl }
295 pair: 関数型プログラミング; 参考文献
300 * How is the equality of functions defined? - Quora : https://www.quora.com/How-is-the-equality-of-functions-defined