Racket
RacketはPLT Inc.が中心となって開発しているプログラミング言語、またはその処理系。 2010年まではPLT Schemeと呼ばれていた。今ではSchemeから枝分かれしたプログラミング言語として扱われている。 最近はRacketからSchemeに機能を逆輸入する提案もみられる。
漸進的型付けを実装したTyped Racketや非正格評価を採用したLazy Racketなどの派生形がある。 Racket最大の特徴は言語指向プログラミング(language-oriented programming)言語と称されるほどにDSLを念頭に置いた機能を実装している点にある。
例えば、RacketにはDatalogが実装されているため、次のコードは実際に動作する「Racketコード」である。 code:prolog
parent(alice, bob).
parent(bob, carol).
ancestor(X, Y) :- parent(X, Y).
ancestor(X, Y) :- parent(X, Z), ancestor(Z, Y).
ancestor(alice, X)?
実行すると、
code:prolog
ancestor(alice, bob).
ancestor(alice, carol).
と答えが返ってくる。