並び順

ブックマーク数

期間指定

  • から
  • まで

81 - 120 件 / 130件

新着順 人気順

lispの検索結果81 - 120 件 / 130件

  • ガベージコレクション実装したいからLISP風インタプリタ作った

    ガベージコクレクションは手を動かすまでがちょっと遠い 下記の記事で書いたように、私は今ガベージコレクションに夢中です。 少し勉強して、ガベージコレクションの難しさの1つは「実装してみる」までが遠いところなのではないかと思っています。 ガベージコレクションというのは、それ単体で成り立つものではなく、基本的にはプログラミング言語の処理系と一緒に実装されるものです。したがって「ガベージコレクションに入門するぞ〜」と意気込んで理論を勉強しても、実装する対象となる適切な処理系がない、という問題に直面することになると思います。 多分、多くの人がそうなったのでは?と勝手に予想しているんですが、どうなんでしょう。 少なくとも私はそうなりました。 現実の処理系は複雑で難しい ガベージコレクションが実装されており、かつ日本語話者が関わりやすい処理系としてはまず CRuby が思いつきます。しかし CRuby

      ガベージコレクション実装したいからLISP風インタプリタ作った
    • Writing a simple Lisp interpreter in Rust

      Lisp is a family of multi-paradigm programming languages (functional, procedural, reflective, …), which can be similar to Lambda Calculus. The name stands for “list processing”. The syntax is based on the concept of S-Expression (short for: Symbolic Expression). The code is therefore organized in a tree-like data structure. In Lisp, code is data, and data is code. In this article, we will write a

        Writing a simple Lisp interpreter in Rust
      • Astronomical Calculations for Hard SF in Common Lisp

        In The Epiphany of Gliese 581, a group of explorers search the mortal remains of a dead superintelligence. The expedition begins in Beta Pictoris—today an unremarkable blue star; in the story, a posthuman Dyson swarm civilization of quadrillions—then passes through Gliese 581, and ends where it started. I wanted to build a timeline of the story, and, because this is hard science fiction, this mean

          Astronomical Calculations for Hard SF in Common Lisp
        • Lispって何?[Lisp入門の入門] - Qiita

          Lispとは Lispと聞いて、「は?それ何?」と思ったそこのあなた!是非この記事を読んでみてください! Lispは、人工知能プログラムやWebアプリ開発に使われてきています。 オライリー社の動物本と呼ばれる本の中でも、Lispは非常に印象的ですよね。 目が5つある象みたいなキャラクターでおなじみ。宇宙から来た動物みたいで、一度見たら忘れないはず。 出典: Land of Lisp 独特なプログラミング言語なので、一度やってみる価値があります。 この記事で入門の入門の文法を学べます。読みながら一緒に書いていきましょう! はじめに Common Lisp入門・基本などの記事がありますが、ここでは入門の入門です。 インストールから始まり、基本的な文法を一緒に書きながら学んでいきましょう。 これまでC,Java,Ruby,JavaScriptなどを書いたことがありますが、Lispはホントに特殊で

            Lispって何?[Lisp入門の入門] - Qiita
          • Portable PrologをCommon Lispで動かした

            Portable PrologをCommon Lispで動かした bit 1982年05月号『Prolog入門(2)』に Portable PrologというLISPで書かれた小さなProlog処理系が載っている。 “Portable” という名前の通り色々な環境で動かすことを前提としており、 ほぼLISP 1.5の機能のみで書かれているため移植が簡単にできるようになっている。 これを少し書き換えてCommon Lispで動かした。 移植の方針 今回は「もとのプログラムを極力書き換えない」という方針で移植することにした。 コードを読んでいると prog を let に書き換えたり、 cond を when に書き換えたりしたくなるような箇所が多々あるが、 そういった気持ちをぐっとこらえ、最小限の変更のみを行った。 実際に変更した箇所 もとのコードが150行ほど。 これに対して変更したのが1

            • Matt Roelle | Fennel: The Practical Lisp

              04/08/2022 Fennel? Around 6 months ago, I discovered a little lisp called Fennel. It compiles to Lua, meaning it's extremely portable since Lua runs basically anywhere. Lua interop is seamless. It runs flawlessly on desktop, in the web, on mobile devices, gaming consoles and on microcontrollers to name a few. Lua is written in portable C code and embeddable by design, extending any game engine wit

              • 10行LISP評価器の実装例(各言語まとめ) - Qiita

                筆者いつもの各言語お遊び記事です.【関連記事】その1,その2,その3 目的 (表)様々なプログラミング言語によるラムダ式(静的スコープ)実装のリファレンスとするため. (裏)ラムダ式プログラミングを実装レベルで布教するため.難解プログラミングじゃないやい. 【参考】ラムダ式プログラミング一時間体験講座(Python/Ruby/JavaScript同時並行版) LISP評価器の仕様 基本構文:lambda,if.Lisp-1のレキシカルスコープ.シンボルとして文字列を使用. 基本関数:=,+,-.値として整数が利用可能. 実行コードはJSONの配列構造.カレントディレクトリのsample.jsonから読み込み. 評価器本体で10行程度(1行80字以下目安,基本関数適用やユーティリティ関数定義は除く). 実行コードは基本的にS式表現と同じであり,構文・関数名と共にSchemeのサブセット仕様と

                  10行LISP評価器の実装例(各言語まとめ) - Qiita
                • An Intuition for Lisp Syntax

                  Every lisp hacker I ever met, myself included, thought that all those brackets in Lisp were off-putting and weird. At first, of course. Soon after we all came to the same epiphany: lisp’s power lies in those brackets! In this essay, we’ll go on a journey to that epiphany. DrawSay we were creating a program that let you draw stuff. If we wrote this in JavaScript, we might have functions like this:

                    An Intuition for Lisp Syntax
                  • Common Lisp for shell scripting - simonsafar.com

                    ... let's use SBCL instead of bash!. Objective Shell scripts are... just programs. Written in a rather ugly programming language, that was nevertheless designed to be as similar to actual UNIX command invocations as possible (given how it is actual UNIX command invocations for the most part). Using any other language (e.g. Python) definitely comes with some downsides: if most of what you're doing

                    • #Script Lisp

                      #Script is designed as a small, expressive and wrist-friendly dynamic scripting language that for maximum familiarity is modelled after the world's most popular and ubiquitous scripting Language, JavaScript. Its minimal syntax was inspired by other small but powerful languages which heavily utilizes functions instead of adopting a larger language grammar defining different bespoke syntax for langu

                      • Emacs Lispで体験するプログラム書き散らす楽しさ #Emacs #Lisp - ドキュメントを見たほうが早い

                        この記事は、はてなエンジニア Advent Calendar 2023の2024年1月16日の記事です。 昨日は id:fxwx23 さんによる「Simulator.app の「Stay On Top」をキーボードショートカットで切り替える」でした。 かゆい所に手が届かないこと、よくありますよね。その際にシュッとスクリプトを書いたりして不便を解消する姿は見習いたいと思います。 始めに 自分は普段テキストエディタに Emacs を使っています。 Emacs は Emacs Lisp というプログラミング言語でエディタの設定を記述できますが、今まで設定を記述する以外の目的で Emacs Lisp を書いたことがなく、プログラムっぽいプログラムを書いたことはありませんでした。 ふとこのことが気になって、年末年始の休みに簡単なプログラムを作ってみました。 実際に書いてみると、他の言語ではあまり体験

                          Emacs Lispで体験するプログラム書き散らす楽しさ #Emacs #Lisp - ドキュメントを見たほうが早い
                        • GitHub - cxxxr/valtan: Common Lisp to JavaScript compiler

                          You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

                            GitHub - cxxxr/valtan: Common Lisp to JavaScript compiler
                          • Why I Still Lisp (and You Should Too)

                            Logo available on public domainAs a long-time user (and active proponent) of Scheme/Common Lisp/Racket, I sometimes get asked why I stick with them. Fortunately, I have always headed up my own engineering organizations, so I’ve never had to justify it to management. But there’s an even more important constituency — my own engineering colleagues — who’ve never ever had the pleasure of using these l

                              Why I Still Lisp (and You Should Too)
                            • Common Lisp ユーザへのScheme紹介

                              [Java Day Tokyo 2018]50分で最新技術学習の基礎を身につける(SOMPO Systems Daisuke Nishino)

                                Common Lisp ユーザへのScheme紹介
                              • Lispマル非入門 - 新・日々録 by TRASH BOX@Eel

                                コンピュータは電子計算機とも訳されるように計算に用いるのが本流である、という信念*1の元に、私はちょっとした計算にもパソコンを用いている。 当然ながら*2計算にはLisp処理系のREPLを使用する。*3 ちょっとした計算にてLisp処理系のREPLを用いるメリットは、例えば何かを単純に足し引きする時に、足し引きする値ごとに演算子を書かなくて済むのである。 私はよく買い物の計画を練るのにREPLを用いる: ; ルーターのお守りを任されたけど使い方が分からん。 ; 入門書でも読もうかな。 (+ 4730 ; 978-4839965402 ) ; => 4730 ; そういえば新人向けのLinux入門書を見繕わないと。 ; この辺りの本とかどうだろう? (+ 4730 ; 978-4839965402 1980 ; 978-4048913928 2970 ; 978-4797380941 ) ;

                                  Lispマル非入門 - 新・日々録 by TRASH BOX@Eel
                                • LambdaLisp - A Lisp Interpreter That Runs on Lambda Calculus

                                  LambdaLisp is a Lisp interpreter written as an untyped lambda calculus term. The input and output text is encoded into closed lambda terms using the Mogensen-Scott encoding, so the entire computation process solely consists of the beta-reduction of lambda calculus terms. When run on a lambda calculus interpreter that runs on the terminal, it presents a REPL where you can interactively define and e

                                    LambdaLisp - A Lisp Interpreter That Runs on Lambda Calculus
                                  • GitHub - kspalaiologos/malbolge-lisp: A lightweight (350MB) Lisp interpreter in Malbolge Unshackled, often dubbed the hardest turing complete programming language.

                                    Malbolge is a public domain esoteric programming language. It was specifically designed to be almost impossible to use, via a counter-intuitive 'crazy operation', trinary arithmetic, and self-modifying code. It builds on the difficulty of earlier, challenging esoteric languages like Brainfuck, but takes this aspect to the extreme. Despite this design, it is possible to write useful Malbolge progra

                                      GitHub - kspalaiologos/malbolge-lisp: A lightweight (350MB) Lisp interpreter in Malbolge Unshackled, often dubbed the hardest turing complete programming language.
                                    • goyaccでparserを生成しLispのcons,car,cdrの式を評価する - sambaiz-net

                                      GoでLispのcons,car,cdrの式を評価したい。 流れとしては字句解析器(lexer, tokenizer, scanner)でソースコードを分割しtoken列にして、構文解析器(parser)で構文木を作るなりして評価できるようにする。 $ brew install clisp $ clisp > (cons 1 ()) (1) > (cons () 1) (NIL . 1) > (car (cons 1 (cons 2 3))) 1 > (cdr (cons 1 (cons 2 3))) (2 . 3) package main import ( "fmt" "go/token" "go/scanner" ) func main() { var sc scanner.Scanner src := []byte(`("A" + "B") + "C"`) errorHandler

                                        goyaccでparserを生成しLispのcons,car,cdrの式を評価する - sambaiz-net
                                      • Lisp implementations

                                        Tiger got to hunt, Bird got to fly; Lisper got to sit and wonder, (Y (Y Y))? Tiger got to sleep, Bird got to land; Lisper got to tell himself he understand. -- Kurt Vonnegut, modified by Darius Bacon

                                        • Common Lisp Style Guide | Common Lisp

                                          Introduction This is an opinionated guide to writing good, maintainable Common Lisp code. This page is largely based on Google’s Common Lisp Style Guide and Ariel Networks’ own guide. Contents General Guidelines Use Libraries Look for libraries that solve the problems you are trying to solve before embarking on a project. Making a project with no dependencies is not some sort of virtue. It doesn’t

                                          • Emacs Lisp で実装する、9つのフィボナッチ関数 - Qiita

                                            概要 基本的に Emacs Lisp (または、Lisp 自体)をあまり知らない方向けです。 Emacs Lisp でどんなコードが書けるのかを知って、興味を持ってもらえればと書きました。 さて、Lisp はマクロで構文を拡張出来る事が特徴ですが、もちろん Emacs Lisp も例外ではなく、フィボナッチ関数を色々な書き方で実装する事が出来ます。 今回は、それ以外にも、ジェネレータ版、遅延評価版、果てはスタックマシーンのコードを直接記述する方法まで、取り揃えました。 (それぞれの関数は、簡単の為、引数に負の値が指定されない事を前提にしています。) 内訳は以下の通りです。 再帰呼び出し系 fib-tail-recursion fib-double-recursion ループ系 (マクロを展開すると結局は同じ様なコードになるけど、色々な書き方が出来る) fib-while fib-dotim

                                              Emacs Lisp で実装する、9つのフィボナッチ関数 - Qiita
                                            • Julia - Lisp を作る - goropikariの備忘録

                                              環境 Julia 1.1.1 初めての Lisp 作り 最近、Software Design (2017/05, 08, 09)で連載されていた五味さんの「人工知能時代の Lisp のススメ」を読んだので、Julia で Lisp を作ってみました。 とりあえず、五味さんの SDLisp を機械的に Julia に翻訳しただけなので全然 Julia っぽくはないですが、なんとか動くものを作ることは出来ました。 train.gomi.info github.com 機械的に翻訳しただけなので動くのは当然なのですが、実際に動くととても感慨深いです。 以前から何某かの言語処理系を作ってみたいとは思いつつも行動には移せていませんでしたが、ようやく言語処理実装未経験者から脱することができました。 実装している途中で mal というステップ・バイ・ステップで Lisp の実装を学べるものがあると知った

                                                Julia - Lisp を作る - goropikariの備忘録
                                              • GitHub - Shirakumo/trial: A fully-fledged Common Lisp game engine

                                                Trial is a game engine written in Common Lisp. Unlike many other engines, it is meant to be more of a loose connection of components that can be fit together as required by any particular game. Please note that the engine is still in flux. The project may change heavily as new constraints become clear. As such, there is no guarantee for API stability at this point. Documentation is available howev

                                                  GitHub - Shirakumo/trial: A fully-fledged Common Lisp game engine
                                                • GitHub - abuseofnotation/termlisp: A lisp dialect based on pattern matching and term rewriting

                                                  You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

                                                    GitHub - abuseofnotation/termlisp: A lisp dialect based on pattern matching and term rewriting
                                                  • Goで簡素な Lisp処理系を書いた - Shohei Yoshida's Diary

                                                    github.com 最近 Goに触れていなかったので復習も兼ねて. 内容としては下記の本に載っている Common Lisp風の簡易 Lisp. 本では Common Lispで書いているので read周りとか楽にできる部分があるのだけれど, Lisp系言語以外だとそんなわけにはいかないのでそこは地道に書いた. あとオブジェクト指向というかクラス継承を使って書かれていた部分を Goっぽく(?)落とし込んで書いた. その他の方針などはだいたい本のまま. 以前もっと簡単なものを Cで書いたことはあったけど, それよりは幾分進んだ内容で適度にいい刺激にはなったかと思いました. 対話によるCommon Lisp入門 作者:栗原 正仁メディア: 単行本

                                                      Goで簡素な Lisp処理系を書いた - Shohei Yoshida's Diary
                                                    • Common Lispの生みの親、スコット・ファールマン博士へのインタビュー

                                                      PLDBより。 BY ハッサム・アルハジャジ はじめに 2022年11月11日 — スコット・ファールマン博士は、カーネギー メロン大学コンピュータ・サイエンス学部の名誉教授です。彼はコンピュータ・プログラミング言語の専門家であり、元祖ニューラル・ネットワークのジェダイマスターでもあります。彼はCommon Lisp言語のコア開発者の一人であり、現在は人工知能の研究を行っています。ファールマン博士は、謙虚な科学者であると同時に、非常に親切な人物です。また、インターネット初の顔文字(横向きの笑顔)の発案者でもあります :-) インタビュー ハッサム: Lispの優れたアイデアの中で、まだ主流になっていないものはありますか? ファールマン博士: Lispの自動ストレージ割り当てとガベージコレクションが主流になるには長い時間がかかりました。これは「巧妙」以上のものであり、最も微妙で発見や修正が困

                                                        Common Lispの生みの親、スコット・ファールマン博士へのインタビュー
                                                      • Common Lisp をWSL (Ubuntu 18.04) +fishで使えるようにする - Qiita

                                                        使いたいツール がCommon Lispで書かれていたので、仕方なくインストールした。CLで書くメリットってなんなんだろう。 $ curl -o /tmp/ql.lisp http://beta.quicklisp.org/quicklisp.lisp $ sbcl --no-sysinit --no-userinit --load /tmp/ql.lisp \ --eval '(quicklisp-quickstart:install :path "~/.quicklisp")' \ --eval '(ql:add-to-init-file)' \ --quit

                                                          Common Lisp をWSL (Ubuntu 18.04) +fishで使えるようにする - Qiita
                                                        • C++のテンプレートでLISPを作った話

                                                          C++のテンプレートでLISPを作った話 はじめに 1年半ほど前、C++のテンプレートでLISPを実装した (コード)。 C++コードの「コンパイル時」にLISPが動くというものだ。 実行時にはコンパイル時に作られた文字列定数を表示するだけだ。 どう作ったか覚えているうちに日本語の文章を書こうと思っていたのに、 すっかり時間が経ってしまいもはやほとんど覚えていないが、 完全に忘れてしまう前に何かしら書いておこうと思う。 超高速C++テンプレート入門 C++に詳しくない人向けにテンプレートのすごく雑な説明をする。 私自身C++に詳しくないので、多分に間違いが含まれているだろう。 C++に詳しい方は生暖かい目で見守ってほしい。 単純な型 C++の変数には型がある。 整数型の変数には整数しか代入できない。 文字列型の変数には文字列しか代入できない。 int n = 42; // 整数型の変数 s

                                                          • FranzとLispの歴史

                                                            IEEEXploreより。 フリッツ・クンツェ; ローレン・クンツェ 概要: 1984年、カリフォルニア大学バークレー校の比較的新しいコンピュータ・サイエンス学部で数学を専攻していた大学院生のフリッツ・クンツェは、数人の学生仲間と1人の教授とともにFranz社を設立した。彼らの使命は、人工知能やエキスパートシステムのアプリケーションに一時期世界で最も広く使われていたLisp(元々はLISP for LISt Processor)と呼ばれるプログラミング言語を商品化することだった。 今日、Lispはフリッツの言葉を借りれば「ドードーの道」を歩んでいるように見えるが、彼はLispの静かな復活が進行中であると主張する。しかし、現代風にアレンジすれば、人工知能(AI)の分野でグローバルな競争力を獲得する、またとない大きなチャンスになる。以下は、フリッツの娘であるローレン・クンツェが行ったフリッツへ

                                                            • Overview - Lisp interpreter in Rust

                                                              Overview The lisp-rs project implements an interpreter, in Rust, for a small subset of Scheme, a Lisp dialect. The main goal of this document is to make sure the reader understands the inner details of how the interpreter was implemented. The project was inspired by Peter Norvig's article (How to Write a (Lisp) Interpreter (in Python)) and the book Writing An Interpreter In Go. This document serve

                                                              • Štar: an iteration construct for Common Lisp

                                                                2024-05-15 :: programming, lisp Štar is a concise and extensible iteration construct for Common Lisp which aims to be pleasant to use, easy to understand, fast if needed, general, and not to look like Fortran. Common Lisp has multiple iteration constructs: mapping functions such as mapcar, special-purpose constructs such as dotimes and dolist, the general but somewhat clumsy construct which is do

                                                                • Lisp in 99 lines of C and how to write one yourself [pdf] | Hacker News

                                                                  In a similar line as the posted project TinyLisp, I'd like to mention uLisp.Lisp for microcontrollers - Arduino, Adafruit M0/M4, Micro:bit, ESP8266/32, RISC-V, and Teensy 4.x boards - http://www.ulisp.com/ In particular, its smallest variant (~800 LoC). > uLisp Zero is a pared-down version of uLisp, capable of running in 8 Kbytes of program memory with 1 Kbyte of RAM https://github.com/technoblogy

                                                                  • Compiling a Lisp: Primitive unary functions

                                                                    first – previous Welcome back to the “Compiling a Lisp” series. Last time, we finished adding the rest of the constants as tagged pointer immediates. Since it’s not very useful to have only values (no way to operate on them), we’re going to add some primitive unary functions. “Primitive” means here that they are built into the compiler, so we won’t actually compile the call to an assembly procedur

                                                                      Compiling a Lisp: Primitive unary functions
                                                                    • 世界のプログラミング言語(32) LISP系言語で実用的なWebアプリも作れるClojureScript

                                                                      今回紹介するClojure/ClojureScriptはLISP系の言語の一種です。シンプルでありながら実用性に重きが置かれており、JVMや.NET、JavaScript上で動かすことができます。そのため、LISPの良さを活かしつつ様々な環境でアプリ開発ができます。今回は特にClojureをJavaScriptに変換して実行できるClojureScriptを使う方法を紹介します。 ClojureでWebアプリを作ってみたところ ClojureとClojureScriptについて もともと、ClojureはJavaの仮想マシンであるJVM上で動くLISP処理系として2007年に開発されました。Javaの様々なAPIをサポートするJVMは非常に高機能であり、JVMで動くClojureは最初から多くの実用的な機能を利用できる言語でした。そして、Java仮想マシンのバイトコードにコンパイルされるた

                                                                        世界のプログラミング言語(32) LISP系言語で実用的なWebアプリも作れるClojureScript
                                                                      • (How to Write a (Lisp) Interpreter (in Python))

                                                                        This page has two purposes: to describe how to implement computer language interpreters in general, and in particular to build an interpreter for most of the Scheme dialect of Lisp using Python 3 as the implementation language. I call my language and interpreter Lispy (lis.py). Years ago, I showed how to write a semi-practical Scheme interpreter Java and in in Common Lisp). This time around the go

                                                                        • Python VS Common Lisp, workflow and ecosystem - Lisp journey

                                                                          📢 ⭐ Celebrating 1001 learners on my Common Lisp course with this coupon code. Thank you! Recently added: 17 videos on MACROS. More info. 🎥 I also have cool Lisp showcases on Youtube . The last ones: how to build a web app in Common Lisp, part 1 and 2. I learned Java and C at school, I learned Python by myself and it was a relief. After 8 years working and doing side projects in Python and JavaSc

                                                                          • Lisp Compiler

                                                                            Introduction This page examines the earliest surviving Lisp compiler, written by Timothy Hart and Michael Levin around 1961. To avoid repetition of phrases like “the compiler”, we will use the abbreviation “HLC” (for “Hart–Levin Compiler”) to refer to it. The HLC was introduced in M.I.T. AIM-039 and documented more fully in the LISP 1.5 Programmer's Manual by McCarthy et al. For information about

                                                                            • Lisp in Vim - Susam Pal

                                                                              Introduction Fifteen years ago, writing Lisp code in Vim was an odd adventure. There were no good plugins for Vim that assisted in structured editing of Lisp s-expressions or allowed interactive programming by embedding a Lisp Read-Eval-Print-Loop (REPL) or a debugger within the editor. The situation has improved a lot since then. In the last ten years, we have seen active development of two Vim p

                                                                              • [入門]Lispを勉強してみると美しさに感動した - Qiita

                                                                                はじめに Lispという言語を聞いたことがないエンジニアも多いかもしれません。「なんだか難しそう」と感じる方もいるでしょう。 (自分もその一人でした。) 「神の言語」とも呼ばれるLisp。そんなに面白いならやってみよう!ということで、私も自分なりにLispを学んでみることにしました。 Lispの魅力を熱心に伝えるために、そのせいで公平性を欠いた記事となっている可能性はありますが、Lispの魅力を伝えたい一心であり、他の言語・FW等を否定する意図は一切ございません。それぞれに良さがあることを理解したうえで、Lispの魅力に焦点をあてて書いたつもりです。 興味本位で足を踏み込んでみた完全初学者です。完全初心者です! 常日頃Lispを扱っているLisperと比べると取るに足らない存在なので、厳密な言葉の意味が違ったり、誤ったことを言っているかもしれませんがご了承ください。その際は優しくコメントな

                                                                                  [入門]Lispを勉強してみると美しさに感動した - Qiita
                                                                                • [PDF] Evolution of Emacs Lisp

                                                                                  74 Evolution of Emacs Lisp STEFAN MONNIER, Université de Montréal, Canada MICHAEL SPERBER, Active Group GmbH, Germany Shepherd: Brent Hailpern, IBM Research, USA While Emacs proponents largely agree that it is the world’s greatest text editor, it is almost as much a Lisp machine disguised as an editor. Indeed, one of its chief appeals is that it is programmable via its own programming language. Em