牌語備忘録 -pygo

あくまでもメモです。なるべくオフィシャルの情報を参照してください。

牌語備忘録 -pygo

もしPythonがS式だったら

Lispの象徴的な特徴「S式(Symbolic expression)」をPythonで表現してみた。

Scheme(Lisp)
(define (fact n)
  (if (= n 0)
      1
      (* (fact (- n 1)) n))))
Python

普通に書くと

def fact(n):
    if n == 0:
        return 1
    return n * fact(n-1)
Python (Symbolic expression)

もしPythonがS式だったら(注:実行しても動きません(´・ω・`))

[def, [fact,n],
    [if, [n, ==, 0],
        [return, [1]],
    [return, [n, *, fact, [n, -, 1]]]]]

こんな感じ?