Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

タグ

listとconsに関するishideoのブックマーク (2)

  • JavaScriptでLispのような再帰的なリストを作るlist関数を作ってみた - あと味

    Lispの勉強をする際に、まだLisp慣れを全然してないので、JavaScriptで書くとどうだろう?ということを考えることが多々あります。 その勉強方法の良し悪しは置いといて、JavaScriptでLispのサンプルプログラムを書いてみようと思った場合、一番ネックなのが、JavaScriptとLispでは、リストの考え方がそもそも違うことかなと思いました。 Lispで(1 2 3)というリストを作る時には、以下のようなコードで作ります。*1 (cons 1 (cons 2 (cons 3 '()))) consは第一引数と第二引数から成るセルを作る関数です。 単純に(cons 1 2)というコードをJavaScriptの配列リテラル表記で表すと[1,2]となるでしょうか。 そうすると、先程作りたかった(1 2 3)というリストを作るための上記のコードをJavaScriptの配列リテラル表

    JavaScriptでLispのような再帰的なリストを作るlist関数を作ってみた - あと味
  • PythonでCleanやHaskellのリスト相当を準備

    CleanやHaskellといった純粋関数プログラミング言語は生産性が高いとあちこちに書いてあったので、いろいろと勉強しているところだ。 勉強していると、Pythonなどの最近の命令型(imperative)あるいは手続き型(procedural)といわれる言語でもかなり似たような記述ができそうな気がした(さすがにJavaやCとかだと無理そうだが)。そこで、Pythonを使って関数プログラミングの醍醐味をどこまで味わえるかチャレンジしてみることにした。あまり関数プログラミングに馴染みのない人にも理解しやすく説明できるように心がけるつもりだ(というか私もあまり馴染みがない)。 純粋関数プログラミング言語では、遅延評価を行えることが特徴となっている。遅延評価とは、すごく簡単に言ってしまうと、必要になるまで式の評価や文の実行をしないことだ。たとえば、無限に続く数列(数値のリスト)を生成する関数を

  • 1