タグ

lispに関するcubicdaiyaのブックマーク (19)

  • Lisp: Common Lisp, Racket, Clojure, Emacs Lisp - Hyperpolyglot

    ca side-by-side reference sheet grammar and execution | variables and expressions | arithmetic and logic | strings | regular expressions | dates and time | lists | fixed-length arrays | dictionaries | user-defined types | functions | execution control | exceptions | streams | emacs buffers | files | directories | processes and environment | libraries and namespaces | objects | lisp macros | reflec

  • S式のC言語 - einblickerの日記

    Common Lisp | 15:47 | 以前この記事を読んで、S式でC言語を書くというアイデアは面白そうだなと思っていた。どうやらgauche.cgenというモジュールを使うとciseが使えるらしいのだが、使い方がよく解らないので使うのは諦めていた。他に何か無いかと探していると、タイトルに「S式ベースC言語」という言葉が含まれている論文がCiNiiにあって(これとこれ)この論文を書かれた方のHPに行ってみると、実際に使えるSC言語の実装が公開されていた。こちらにはちゃんとドキュメントもある。このSCを使うと、CL風のマクロがC言語で使える。試しに使ってみた例。 (decl (printf) (fn int (ptr (const char)) va-arg)) (%defmacro from-to (var from to &body form) `(for ((def ,var in

  • ㊣十大正规足球外围app-bsport体育娱乐官网入口

  • SC: The SC Language System

    Japanese / English SC言語は,Common Lispで実装された,S式の(Scheme風の)構文を持つC言語です.たとえば,以下のようなCコード long sum(long *ar, int n){ long s=0; int i=0; do{ if (i >= n) break; s += ar[i++]; } while(1); return s; } を,SCでは, (def (sum ar n) (fn long (ptr long) int) (def s long 0) (def i int 0) (do-while 1 (if (>= i n) (break)) (+= s (aref ar (inc i))) ) (return s) ) と書くことができます. また,拡張SC言語から別のSC言語への「変形規則」

  • CL-YACC

    CL-Yacc is a LALR(1) parser generator for Common Lisp, somewhat like Yacc, GNU Bison, Zebu, lalr.cl or lalr.scm. CL-Yacc は提供するシンボルを `yacc` パッケージからエクスポートしています. (use-package 'yacc) パーサーは字句解析器 (lexer) の出力を消費してゆきます.字句解析器は終端 記号のストリームを出力します. CL-Yacc は字句解析器が二つのシンボルを返 す,引数を取らない関数である事を仮定しており,字句解析された結果を構文 規則から導かれたアクションへと渡します.字句解析器は入力情報がなくなっ たら,単に `nil` を返さなければなりません. 非常に単純な,リストからトークンを取りだしてゆく字句解析器を示します. (defu

  • EmacsWiki: Elisp Cookbook

    This page contains snippets of code that demonstrate basic elisp programming operations in the spirit of the o’reilly cookbook series of books. For every task addressed, a worked-out solution is presented as a short, focused, directly usable piece of code.All this stuff can be found elsewhere, but it is scattered about in libraries, manuals, etc. It would be helpful to have here in one spot.These

  • Emacs Lisp のダメなところ - あどけない話

    Emacs Lisp をこよなく愛する僕の目から、Emacs Lisp がダメだと思うところをまとめておきます。 文化的な問題 Emacs Lisper の多くは、Lisp が好きで使っているのではなく、Emacs が好きだからしかたなく使っているのでしょう。当は C で書きたいのに、無理して Lisp を利用している感じです。 そのため、Emacs に付いてくる Emacs Lisp のコードは、Lisp らしくないものがほとんどです。単に C での発想を Lisp で表現しています。 これらのコードは、読みこなせないぐらい関数が大きく、副作用のある部分とない部分が分離されていません。また高階関数を用いて、データ構造を走査するコードと実際に仕事をするコードを分離するという意識も低いようです。 GoogleMapReduceという論文のお陰で、Lisp の写像関数(map)と畳込み

    Emacs Lisp のダメなところ - あどけない話
  • M.Hiroi's Home Page / Functional Programming

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

  • Retrocomputing - MIT CADR Lisp Machines

    MIT CADR Lisp Machine Source code You can find the CADR emulator here. MIT CADR Lisp Machine Source code After a long and interesting search I uncovered a set of 9-track tapes which appear to be a snapshot of the MIT CADR Lisp machine source code from around 1980. This is not the final source code and not the last source release I will make. It is, however, the first source release. Tom Knight and

  • CodeZine:JavaScriptでつくるSchemeインタプリタの基礎の基礎(lisp)

    はじめに 現存するプログラミング言語の中で2番目に古いのがLispです。生まれは古くても、いまだに使われ続け、また、Rubyなどの新しい言語にも影響を与えています。そのLispの派生であり、シンプルさが売りなのがSchemeです。 ここではSchemeの簡単なインタプリタをJavaScriptで作ってみます。対象読者 稿はLispやSchemeは少し触ったことはあるけど、インタプリタは書いたことがないという方を読者対象としています。また、JavaScriptの文法や、簡単なデータ構造についての知識を前提とし、説明は省きます。必要な環境 テキストエディタと、JavaScriptが動くWebブラウザがあれば十分です。他に特に用意するものはありません。概要作成するインタプリタについて インタプリタのコードはJavaScriptで書き、HTMLのフォームを使って、Schemeのプログラムの入力お

  • リストとしての関数 -> 簡易クロージャの実装 - (new Hatena).blog()

    最近 Lisp がお気に入りです。 今日は、Lisp プログラムがリスト (括弧で括られた式) として表記される、という当たり前の事実について、Emacs Lisp をベースにしながら考察してみたいと思います。 関数はリスト、リストは関数 古い Lisp では、関数は第一要素に "lambda" というシンボルを持つ、というだけの単なるリストであったそうです。 新しい Lisp (Scheme や Common Lisp) では「関数」という独立した型になっていますが、Emacs Lisp では今も古い時代の性質を残しているということで、この点を Common Lisp と対比しながら検証してみます。 lambda 式 (関数) を、そのままの形と、二通りのクォート式で括った形、それぞれについてテストします (Meadow 3.00 と GNU CLISP 2.41 を使用しています)。

    リストとしての関数 -> 簡易クロージャの実装 - (new Hatena).blog()
  • なんでも再帰

    Shiro Kawai 7/3/2000初出、3/29/2002更新 まあとりあえずカッコは我慢しよう。ラムダとやらも、関数ポインタ+環境データ ということで納得しよう。しかし、Schemeのループ構文(do)は許せないなあ。 ごちゃごちゃしてるし、途中で脱出できないし。 CやPerlのforやwhileの方がずっと使いやすいね。 え? doなんて使わない? じゃあどうやってループを書くんだ? 消えるループ 簡単だけど、よくありそうな例として、こんなのを考えてみよう。 入力テキストの行数を数える関数count_linesを書きたい。 Cで書くとすれば、こんな感じだ。 /* 例1 */ int count_lines(void) { int count = 0, c; for (c=getchar(); c!=EOF; c=getchar()) { if (c == '\n') count

  • なんでも継続

    Shiro Kawai まだ下書き Schemeの特徴をあげるときに、「継続」や「call/cc」が出て来ないことはない。 でも、R5RSのcall/ccの項をいくら読んでも、どうもよくわからない。 call/ccを使えばC言語のbreakみたいなのとか、コルーチンとかいう スレッドもどきとかが書ける、というのはわかったけど、一体そういうのが書けて 何が嬉しいのか、そこんとこがピンと来ないんだ。 今、そこにある継続 プログラミングの世界の概念には、禅の公案のようなものがある。 それを説明する文章はほんの一文なのに、最初に目にする時、 その文は全く意味をなさない、暗号のように感じられる。 だがひとたびその概念を理解すると、 その概念の説明は確かにその一文で説明されているのがわかるのだ。 そんな、「分かれば分かる」という禅問答の中でも 「継続」は最も謎めいたものの一つと言えるだろう。 文献を

  • Common Lisp

    Common Lisp クックブック ●ポイミスライムにもわかる Common Lisp ●Common Lisp と AllegroServe(Aserve) で作る Web アプリケーション ●series を使ってみる ●detachtty ●clg(Common Lisp で Gtk)

  • Why Ruby is an acceptable LISP (2005) | Random Hacks

    Random code snippets, projects and musings about software from Eric Kidd, a developer and occasional entrepreneur. You're welcome to contact me! Dec 03, 2005 • by Eric Kidd Years ago, I looked at Ruby and decided to ignore it. Ruby wasn’t as popular as Python, and it wasn’t as powerful as LISP. So why should I bother? Of course, we could turn those criteria around. What if Ruby were more popular t

  • Stevey's Blog Rants: Lisp is Not an Acceptable Lisp

    It's been over four months since Eric Kidd posted his infamous Why Ruby is an acceptable LISP article. You know, the one that got approximately 6.02e23 comments, ranging from "I agree!" through "I hate you!" to "I bred them together to create a monster!" Any time the comment thread becomes huge enough to exhibit emergent behavior, up to and including spawning new species of monsters, you know you'

  • ホワット・ア・ワンダフル・ワールド onLisp

    アンチ amazon の訳者に敬意を表して ;-) onLisp まぁ,翻訳の堅実さ,Common Lisp の雄大さを象徴するような表紙,内容の素晴らしさなどは,他の人や中村正三郎さんあたりに書かれ (る | ている) だろうから,僕はちょっと違った観点から話を進めていく. (なので,この文章を購入するかしないかの判断材料にするのはおすすめできない) 一つ注意すべきなのは,このは,14 年 も前に書かれたの翻訳である,という点である.なので,今日の視点から考えると,いささか言い過ぎの感も感じられる.この 14 年間,他の言語も寝ていたわけでは無く,確実に進歩と成熟を遂げてきているため,他の言語でも十分可能か,より上手くできるような問題領域は年々増え続けていると思われる. # 逆に考えると,14 年も経つのに,Common Lisp の世界に限れば,全く内容が古びていないというのは驚異

  • 魔法言語 リリカル☆Lisp

    About ★「魔法言語 リリカル☆Lisp」はノベルゲーム風のLispチュートリアルです。 "アリサ"や"すずか"達と楽しくLispを学べます。 全12話構成で各話の最後には練習問題が用意されています。 Lisp処理系にはNScripter上で動作するLispインタプリタであるNScLisperを使用。 別の処理系をインストールする必要はありません!! Lispとは ★CやC++Java、BASIC、PerlRubyPHPPython、ML、Haskellなどと同じプログラミング言語の一つです。 マサチューセッツ工科大学のJohn McCarthy教授を中心とする研究グループによって開発され、1962年に発表されました。 LispとはList Processorの略で名前通りリストの処理を得意とします。 このことから人工知能の開発に多く用いられています。 NScLisperとは

    魔法言語 リリカル☆Lisp
  • Y Combinator

    In this file we derive the Y combinator, one of the fundamental results of recursive procedure theory. You already know that in some cases it is not necessary to give a procedure a name. For example, ((lambda (x) (+ x 1)) 6) adds 1 to 6 without naming the procedure that does it. But, what about a recursive procedure? For example, (define fact (lambda (n) (if (zero? n) 1 (* n (fact (- n 1)))))) whi

    cubicdaiya
    cubicdaiya 2007/01/28
    コンビネータの解説
  • 1