タグ

Lispに関するsyoko_sasakiのブックマーク (2)

  • 腐女子のためのlisp入門 #1 - Oh! Can Not Diary

    腐lispの第一回です。いきなりですが、関数定義についての話をします。 関数定義の方法 elispの関数定義の方法は以下のようになっています。 (defun 関数名 (仮引数1 仮引数2 ...) フォーム) かけざん関数をつくる というわけで、早速、みなさんにはおなじみのあのかけざんをする関数をつくっちゃいましょう☆★☆★☆ (defun × (seme uke) (message "%s × %s" seme uke)) (× 'kusakabe 'sajo)  ; "kusakabe × sajo"と表示される 簡単ですね。 上のコードはEmacsのscratchバッファに書いてすぐに試すことができるので、好きなだけかけざんしましょう。 括弧について 最初は括弧が多くて戸惑うかもしれません。でも慣れればかわいく見えてくるので大丈夫です。 それでも信じられないという方は、開き括弧"("

    腐女子のためのlisp入門 #1 - Oh! Can Not Diary
  • 竹内関数で音楽生成 - aike’s blog

    Lisperの人ならみんな知ってる竹内関数(たらいまわし関数)という関数があります。 定義としてはこんな感じ。 そのシンプルな定義からは想像もつかないほど複雑で膨大な再帰呼び出しがおこなわれるとても興味深い関数です。たとえば引数にTarai(10,5,0)を与えると343,073回も再帰呼び出しされたりします。 この関数呼び出しの引数がどのように変化するか知りたくてプログラムを書いて調べてみたところ、Tarai(10,5,0)の場合は3つの引数がそれぞれ0〜10(xは-1〜10)の間で少しずつ変化するなかで、2つの値を固定してひとつの値が下降していくような挙動があったりして、なんだか音楽の3和音のコード進行を思わせるような動き方です。 そういうことなら、ということで実際に音にして聴いてみました。Tarai関数が呼ばれるたびに引数のx、y、zを、0=ミ、1=ファ、2=ソ、……、のように音に割

    竹内関数で音楽生成 - aike’s blog
  • 1