blog

LISP -- 関数型プログラミング

LISPは、人工知能のための言語として設計された汎用高レベル・コンピュータ・プログラミング言語であり、最初の宣言型関数型プログラミング言語です1。 1.1つ以上の関数を入力として受け取る 2.関数を出...

Apr 18, 2020 · 2 min. read
Share this



1. 追加構文: (+ a b):
 // a bを加えてjsに変換するとaになる。+ b
  : (+ 1 2) // 3
2. 乗算: (* a b) 
 // a bを掛けてjsに変換するとaになる。* b 
  : (* 2 3) // 6
 
3.  : (define size 5) 
 // define 宣言に使われる文字である。
 // ここでは変数sizeを宣言しており、その値は5である。
 // もう一度計算するには、5を2倍する。* 2 
  : (* size 2) // 10
 
4. 複合処理: 
 // define 宣言に使われる文字である。
 // add関数を宣言すると、パラメータはa b、実行ロジックはa + b (+ a b)) 
  : (add 1 2) // 3 
 // sqの関数を宣言し、パラメータはa b、実行ロジックはa multiply b (+ (* a a)(* b b))) 
  : (sq 1 2) // 5
5. if(条件判定): 
 // abs関数を宣言する。
 // aが0より大きければ戻り値はa、そうでなければ戻り値は-aという実行ロジックである。
  : (define (abs a) (if (> a 0) a (- a)))

再帰。

// 6の階乗(つまり1)を求める再帰関数の例\*2\*3\*4\*5\*6) 
//  : パラメータを渡す関数を定義し、nから始めてn-1倍し、最後の値が1になったら1倍して終了する。
// definen個の引数を持つfn関数を宣言する。
(define (fn n) 
 // nが1に等しい場合は1を返し、そうでない場合はnにn-1を掛けるが、n-1が1に等しいとは限らないので、n-1を渡しながらもう一度fnを呼び出して計算を続ける。
 // n-1fnのパラメータとなり、nが1になるまで続けられ、そこで終了する。
 (if (= n 1) 
 1 
 (* n (fn (- n 1))) 
 ) 
)

反復。

 // 反復関数の例として、6の階乗(つまり1)を求めるものがある。\*2\*3\*4\*5\*6) // 反復とは1からnまでの順方向の操作である。
 // fnftのカプセル化
 (define (fn n) 
 // ft関数を呼び出す
 (ft 1 1 n) 
 )
 // ftの実行ロジックを定義する
 (define (ft result n maxN)
 // nがmaxNより大きければ結果を返し、そうでなければftを続けて引数を書き換える。
 (if (> n maxN) 
 result 
 (ft (* n result) (+ n 1) (maxN)) 
 ) 
 )

高次関数。

数学およびコンピュータ・サイエンスにおいて、高階関数とは以下の条件の少なくとも1つを満たす関数のことです。

1.1つ以上の関数を入力として受け付けます。

2.関数のエクスポート





1.Lispを学んだ後、再帰について新たに理解しました。

2.再帰は、それが満たされて初めて再帰と呼ばれます。

3. Tail recursion() は基本的に反復です。



Read next

vue basic 04 - コンポーネントと通信する他の方法

vue foundation 04 - コンポーネントと通信する他の方法 1. provide と inject - 階層的なネストでデータ通信を処理 親コンポーネントの provide で変数を提供し、子コンポーネントの inject で変数を注入します。いいえ

Apr 17, 2020 · 2 min read