nptclのブログ

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

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

closureには何が保存されるのか

closureとは関数にデータを保存するための仕組みです。 Lisp大好きな人はlambdaと一緒に多用します。 例えばこんな使い方をします。 (let ((x 0)) (setq *call* (lambda () (incf x)))) (funcall *call*) -> 1 (funcall *call*) -> 2 (funcall *call*) -> 3 …

分数の割り算で余りを求める

分数の割り算で、余りを求める方法がわからなかったという内容です。 どうも小学校の算数の内容らしいですが、わからなかったのだから仕方がない。 あと「帯分数」というモノを初めて知りました。 習った記憶が全くない。 Common Lispでは、truncate関数を使…

Common LispとC言語で虚数部のゼロ符号に違いが出る

ずっと悩んでいたことがわかったのでメモします。 例えば下記の関数 log(1-z) のzに10を入れると、Common LispとC言語では結果が違います。 Common Lispの例 (defun log1-z (z) (log (- 1.0 z))) (log1-z 10) -> #C(2.1972246 3.1415927) C言語の例 #include <stdio.h></stdio.h>…

C言語にて関数csinlが使えない場合がある

数学のsin関数に複素数って渡せるんですね。 全然知りませんでした。 C言語のc99標準ライブラリにも用意されているようです。 具体的には下記の関数。 csinf, csin, csinl, sin(tgmath) 問題は、clangのlong double complexを引数とする関数がいくつか使えな…

整数を英語で表現する4(序数と負数)

最後に、序数と負数について説明します。 序数 数が0~19までの序数はすでに表に出しています。 例えば13は下記の通り。 * (format t "~:R" 13) thirteenth 20以上の場合、例えば43は次のようになる。 * (format t "~:R" 43) forty-third 40であるfortyは通…

整数を英語で表現する3(巨大な数)

前回はthousand, million, billionの次は何かという話題で終わらせました。 この3桁区切りの単位さえわかれば、無限に数を表現できることになります。 どうも、この単位を求める方法は決まっておらず、色々あるようです。 本投稿では、 The Conway-Wechsler …

整数を英語で表現する2(中学レベル)

あまり大きくない整数を英語で表す方法について説明します。 どれくらいかというと、0から億くらいでしょうか。 それ以上の整数の表現は次章になります。 自分は中学レベルの英語の知識も危うかったため調べました。 せっかくなのでその内容をここに記載して…

整数を英語で表現する1

これから整数を英語で表す方法をひたすら説明します。 Common Lispのformat関数~Rでは、整数を英語で表現できます。 例えば下記の通り。 * (format t "~R" 13) thirteen * (format t "~R" 1234) one thousand two hundred thirty-four * (format t "~R" -200…

遅すぎるPCでsbclのソースをコンパイルする

遅すぎるPC上でsbclのソースをコンパイルすると、途中でエラーが発生して止まります。 あまり問題になっていないように見えるのですが、 みんないいコンピュータを使用しているからなのでしょう。 うちにあるのはクソみてえなPCばかりで、 FreeBSDのportsで…

clispをFreeBSDにインストールする

【追記】13.0-RELEASEの手順はこちら FreeBSD 13.0-RELEASEでclispをソースから構築 - nptclのブログ 【追記】portsにclispが追加されました clispをFreeBSDにインストールする2 - nptclのブログ 【追記】最新バージョンのclispを入れる手順を追記しました …

Common Lispを作りたい

Common LispをC言語で作りたいと思い、コツコツとやって来て、 だいたい半分くらいまで作り上げました。 しかし最近になって作成する時間があまりとれなくなったため、 せっかくなので現状で公開することにしました。 https://github.com/nptcl/npt とっても…

sbcl Windows版のmsiファイルから内容を直接展開する

Windows環境にsbclを導入するには、公式サイトからmsiファイルをダウンロードして実行する必要があります。 するとインストーラーが起動し、わざわざ管理者モードになって親切に色んなことをやってくれます。 例えば次の通り。 Program File上へファイルの展…

投稿の内容について

はじめまして。 プログラミングに興味があるものです。 最近、思うところがありまして、主にCommon Lispという プログラミング言語の話題を飽きるまで投稿したいと思っています。 あまり難しく考えずに楽しく書いていきたいと思います。 よろしくお願い致し…