パーサの勉強のために、前回は infixing library を作りましたが、今回は型システムを作ってみます。 Lisp という言語はコード自体がデータとして扱えるので、このようなシステムを作るにはうってつけです。 型システム入門を読みつつ型システムを Lisp のコードに落とし込んでいきます。 今回作ったものは このコミット にあります。 とはいえなんというか、ブログにできることがそんなに多いわけではなく(実装の詳細を日本語にできない)。 まず、型の制約を表すデータを定義します。 (defrecord Constraint [expected actual]) (defrecord Forall [variables expression]) (defrecord Bound [variable]) (defrecord Pair [first second]) (defrecord
homebrewでclispを入れるのをやってみた。 その1 CLISPを入れる $ brew install clisp対話によるCommon Lisp入門 1 - by shigemk2 その2 SLIMEを入れる(EmacsニオケルCommon Lisp実行環境) $ cvs -d :pserver:anonymous:anonymous@common-lisp.net:/project/slime/cvsroot co slimeダウンロードしたファイルを/Applicationsディレクトリにコピー。 そして以下を.emacsに記述。 ;; slime (setq inferior-lisp-program "/usr/local/bin/clisp") (add-to-list 'load-path "/Applications/slime") (require 'slime)
地球上でもっともパワフルなプログラミング言語であると言われながら、その謎めいたシンタックスやアカデミックな評判の高さなどから敬遠されることもあったLisp。そんなLispの不遇な時代に終わりを告げるのが本書『Land of Lisp』(Lispの国)です。不思議なマンガやout-of-this-worldなゲームの数々とともに、ベテランLisperの著者が、謎多きCommon Lispを伝授。リストの操作、入出力、再帰などの基礎から始めて、さらにマクロや高階プログラミング、ドメイン特化言語などへと話題をすすめながら、Lispのより高度なテクニックについて解説しています。 翻訳者によるサポートページ(http://practical-scheme.net/wiliki/wiliki.cgi/Shiro:LandOfLisp) 謝辞 はじめに Lispがクールで、そして奇妙なわけ Lispがそ
(require 'cl-seq) ;; (or (or (or "a" "b") "c") "d") と同じ (reduce (lambda (result item) (or result item)) '("a" "b" "c" "d")) ;; => "a" ;; フィルタ関数を順番にかける (reduce (lambda (res fun) (funcall fun res)) '(;; 元になる文字列 "hoge" ;; o を a に置換 => "hage" (lambda (str) (replace-regexp-in-string "o" "a" str)) ;; 先頭文字を大文字に変換 => "Hage" (lambda (str) (capitalize str)) ;; 同じ文字列を2回繰り返す => "HageHage" (lambda (str) (conca
Join the official community for Google Workspace administrators In the Google Cloud Community, connect with Googlers and other Google Workspace admins like yourself. Participate in product discussions, check out the Community Articles, and learn tips and tricks that will make your work and life easier. Be the first to know what's happening with Google Workspace. ______________ Learn about more Goo
ちょっと情報を抽出したい事があったので、片手間ですが、つくってみました。 (ql:quickload :drakma) (ql:quickload :cl-json) (setq drakma:*text-content-types* (cons '("application" . "json") drakma:*text-content-types*)) (setq drakma:*header-stream* nil) (defun get-hatebu-info (url) (json:decode-json-from-string (drakma:http-request (format nil "http://b.hatena.ne.jp/entry/json/~A" url)))) (defclass <bookmark-entry> () ((title :initarg :
以前に載せたマージソート(をベースとしたもの)をSBCL(1.0.58)にコミットしてくれたPaul Khuongさんが、こんな記事を書いていて、なるほどなー、と思ったので、表題に関係する部分を参考にさせて貰って変更前後での比較を行ったメモ。 オリジナルのマージソート まず、SBCL(1.0.58)のリストに対する破壊的マージソートの実装*1: ;; 二つのソート済みリストのマージ関数 (declaim (inline merge-lists*)) (defun merge-lists* (head list1 list2 test key &aux (tail head)) (declare (type cons head list1 list2) (type function test key) (optimize speed)) (macrolet ((merge-one (l1 l
Written by Krešimir Bojčić After discovering awesome power of Ruby that was somewhat inspired by Lisp I could not help but wonder if Lisp is truly “Lambda the Ultimate” as they say. First impressions Some brilliant and smart people are writing essays about it, for example “Revenge of the Nerds” really got me hyped. It is a language that has or can have any feature any other language has (and then
Javathcript allows you to script your web pages in a simple lisp variant. Once you include Javathcript.js, any script tags in your document with type="text/lisp" will be evaluated. It will also download lisp files (only from the original server), if you have a script tag that has a src attribute. Finally, you can also evaluate lisp code from javascript using Javathcript.eval(lispString). While it
Arc is a programming language, a dialect of the language Lisp, developed by Paul Graham and Robert Morris. It is free and open-source software released under the Artistic License 2.0. In 2001, Paul Graham announced that he was working on a new dialect of Lisp named Arc. Over the years since, he has written several essays describing features or goals of the language, and some internal projects at G
「Emacs」風テキストエディター「xyzzy」が6年ぶりのアップデート xyzzy Projectは29日、Windows環境で動作する「Emacs」風のテキストエディター「xyzzy」の最新版v0.2.2.236を公開した。本ソフトのバージョンアップは、2005年12月以来となる約6年ぶり。 「xyzzy」は、UNIX環境で定番の「Emacs」によく似たキーバインドを採用する老舗のテキストエディター。 プログラミング言語“Common Lisp”にほぼ準拠した言語を独自に実装しており、自由に機能を拡張できるのが特長。 ファイラー機能、複素数や“人生、宇宙、すべての答え”を計算できる電卓機能、五目並べ機能など、本ソフトがもつおまけ機能の多くは“Common Lisp”で実装されている。 多少使い手を選ぶところはあるものの、その自由度の高さから一部で熱狂的な支持を受けている。 本ソフトはも
This article may be too technical for most readers to understand. Please help improve it to make it understandable to non-experts, without removing the technical details. (August 2021) (Learn how and when to remove this message) This article is about an Internet communication protocol. For the programming language, see Lisp (programming language). For other uses, see Lisp (disambiguation). The LIS
現在Javaワールドで最もエキサイティングなことの1つは、別のプログラミング言語を仮想マシンで動くようにすることです。JRuby、Groovy、Scala、およびJavaScriptエンジンRhinoの周囲にはさまざまな試みがあります。しかし、どうしてそこで止めてしまうのでしょう。メインストリームの外側へ一歩を踏み出したいと本当に思うなら、Javaとは完全に異なる世界に飛び込もうと考えるなら、Lispは重要なオプションです。しかも、オープンソースのJVM用Lispプログラミング言語実装は複数あり、すぐに検討を始められます。 ところで、Lispの価値は何だと思いますか。1つには、この50歳の言語が、我々が今日あたりまえのことと考える多くのアイディアの触媒となってきたことです。if-then-else構造はもともとLispから発生しましたし、オブジェクト指向やガベージコレクションを備えた自動メ
LISPの真実を読んでたら最後に出てきたので、かなり古い記事だけれども、Eric Kidd氏のWhy Ruby is an acceptable LISPを訳してみました。まつもとさんによる反応もあり、そのエントリの中で原文はほぼ要約されています。 一年前、私はRubyに注目してはいたものの、それを無視することにした。RubyはPythonほどポピュラーではないし、LISPほど強力というわけでもない。なのに何故気にかけなければならないというのか。 もちろん、これらの評価基準は考えなおすこともできる。もしRubyがLISPよりもポピュラーで、Pythonよりも強力だったらどうなるだろうか?*1 それはRubyを興味深いものにするに足るのではないか? この疑問に答える前に、LISPを強力たらしめているものは何なのかを定義しておくべきだろう。Paul GrahamはLISPの美徳について雄弁に語
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く