nptclのブログ

Common Lisp処理系nptの開発メモです。https://github.com/nptcl/npt

2021-01-01から1年間の記事一覧

deposit-field, dpbの使い方をいつも忘れる

ちゃんとメモしておきます。 まずはbytespecから 1. bytespec 位置とサイズを保有するオブジェクトです。 次のようにして生成します。 (byte size pos) 下記の例は「3番目から7個」という意味。 (byte 7 3) 図であらわします。 098769876543210 ------------…

正規表現とPrologとCommon Lisp

磯野ォ~、非決定性やろうぜ~!みたいなノリで、NFAを扱えないか考えていました。 PrologでNFAを扱うのはそんなに珍しい事じゃないと思いますので、 やっている人は沢山いると思います。 同じようにCommon LispでNFAを扱う人も普通にいます。 過去に自分もN…

麻雀とPrologとCommon Lisp

前の投稿Prologのようなものを作る - nptclのブログでは、 Common LispでPrologのようなものを作りました。 これが想像以上にPrologっぽかったので驚きました。 ちゃんとPrologしてますよ。 実は今まで私はPrologを使ったことがありませんでした。 でもせっ…

Prologのようなものを作る

Common LispでPrologのようなものを作りましたが。 こういうことをしてる人っていっぱいいると思います。 目新しい事ではないと思いますけど、苦労したので公開します。 もっと簡単にできると思ってたのに難しかったです。 本当はPrologを作るにあたっての注…

Scheme R7RSの形式意味論を読んでいく5(おわり)

ひとまず終わる これで関数の説明が全部終わりました。 リンクを張っておきます。 Scheme R7RSの形式意味論を読んでいく1 - nptclのブログ Scheme R7RSの形式意味論を読んでいく2 - nptclのブログ Scheme R7RSの形式意味論を読んでいく3 - nptclのブログ Sch…

Scheme R7RSの形式意味論を読んでいく4

続きです Scheme R7RSの形式意味論を見て行きます。 前回の続きとなります。 Scheme R7RSの形式意味論を読んでいく3 - nptclのブログ 【new】newの実装を考える これ以降はnew関数が現れるため、メモリに関する説明が必要です。 newは新たにメモリ領域を確保…

Scheme R7RSの形式意味論を読んでいく3

続きです Scheme R7RSの形式意味論を見て行きます。 前回の続きとなります。 Scheme R7RSの形式意味論を読んでいく2 - nptclのブログ 7.2.3. Semantic functions 意味関数はSchemeの中核です。 式を受け取りどのように実行するかを表します。 意味関数は次の…

Scheme R7RSの形式意味論を読んでいく2

続きです Scheme R7RSの形式意味論を見て行きます。 前回の続きとなります。 Scheme R7RSの形式意味論を読んでいく1 - nptclのブログ 形式意味論の関数 話しを続ける前に、形式意味論でよく使われる「関数」について 説明しておく必要があります。 関数とい…

Scheme R7RSの形式意味論を読んでいく1

はじめに Schemeの仕様書を見ていました。 ものはここにあります。 small.r7rs.org https://small.r7rs.org/ さらに日本語訳もいくつかあるようです。 私はここを利用させていただきました。 R7RS 日本語訳 (milkpot様) http://milkpot.sakura.ne.jp/schem…

nptをカラフルにしたい

npt

nptに色を付けてみました。 気分転換です。 なんかいいですね。 ただ色が付いただけでわくわくします。 本当は色はおまけでした。 そのうちeditline / readlineを廃止しようと思っており、 代わりとなるプロンプトモジュールを作成していたのですが、 せっか…

load-time-valueを作ろう!

目次 はじめに 使い方 evalの場合 compile-fileの場合 make-load-formの実行 gensymを扱う makefileを使う 1. はじめに load-time-valueという機能を知っていますか? この機能の実装が死ぬほど面倒だったので、 ちゃんと記録に残そうという気持ちになりまし…

FreeBSD 13.0-RELEASEでclispをソースから構築

clispを使いたいなら、あまり難しいことを考えずに pkgとかportsを利用すればいいと思います。 ここでは、手動でclispを構築する方法について説明します。 以前にも同じ内容clispをFreeBSDにインストールする - nptclのブログを投稿しましたが、 13.0-RELEAS…

オブジェクト指向の難易度を下げる

Common Lispにはオブジェクト指向のシステムが存在します。 通称、CLOS (Common Lisp Object System)です。 本章は、不完全な知識でCLOSを開発していくことを考えます。 Common Lispでは、CLOSはオプションではなく必須の機能です。 特にエラーで使用します…

npt amalgamationを作り直す

npt

開発のメモです。 npt amalgamationとは、sqliteのamalgamationの考え方をまねて作ったものであり、 nptのソースを1つのファイルに結合するというものです。 現時点でnptのソースは770個くらいですが、amalgamationを使えば lisp.c lisp.h shell.c の3つにな…

nptでPrologを使う

npt

Prologを使いたいのですがどうしたらいいのか。 ちょっと調べてみると、Common Lispで動作するPrologがあるらしく、 有名どころではPAIPROLOGというものがありました。 これはPAIPという有名な本に載っていたものなんだと思います。 自分は見たことが無いの…