fu7mu4’s diary

はてなダイアリーから移転しました。

Clozure CL をビルドした

Clozure CL をビルドした

TL;DR

macOS Mojave で Clozure CLが起動しなくなっていたので、githubのissueどおりにビルドすればうまくいった。

https://github.com/Clozure/ccl/issues/150

概要

clozure cl の 1.12dev1のTarボールと 現行のソースコードをダウンロードし、 Lisp Kernelをビルドし、そのビルドしたイメージでLisp Kernelをビルドした。 それから Clozure CL64.app もついででビルドした。

手順

git clone https://github.com/Clozure/ccl.git
curl -L -O https://github.com/Clozure/ccl/releases/download/v1.12-dev.1/darwinx86.tar.gz
cd ccl
tar xvf ../darwinx86.tar.gz
cd lisp-kernel/darwinx8664/
make clean
make

Clozure CL Lisp KernelをBuildする

cd ../..
./dx86cl64

以下はcclのrepl内の操作

(ccl:rebuild-ccl :full t) ; ビルド
(quit) ; 終了

Lisp Kernelをビルドしたイメージで Lisp Kernelがリビルドできるか確認する

./dx86cl64

以下はcclのrepl内の操作

(ccl:rebuild-ccl :full t)

ここで終了(quit)してもよいが Clozure Cl.app が必要な場合そのまま replを抜けずに次も行う。

(require 'cocoa-application)
(quit)

これで Clozure CL64.app が作成できたので、起動して確認した。 あとは、アイコンを差し替えて /Applications に移動すれば完璧なんじゃないかな。

これってどう使うの?(マイナス・ゼロ・テン・ゼロ)

曖昧さ回避

この記事は 関西Lispユーザ会アドベントカレンダーの6日目の記事です。

広瀬正の小説については Wikipediaの記事などを参照してください。

概要

『マイナス・ゼロ・テン・ゼロ』は、現在の多くのプログラミング言語が採用している、IEEE754によって規定された数です。Common Lispの実装でもさまざまな箇所で影響を受けています。

本記事は、-0.0を題材にいろいろとCommon Lispで遊ぶ記事になります。

-0.0 ;-> -0.0

なお、Common Lispでは『マイナス・ゼロ』を評価すると正のゼロになります。

-0 ;-> 0
続きを読む

謎の関西Lispユーザー会の紹介

この記事は関西Lispユーザ会アドベントカレンダー6日目です。

関西Lispユーザ会というものが、大阪で定期開催されています。
今回の記事は参加者による紹介です。

公式情報については、関西Lispユーザ会 ウェブサイト をあたってください。

その他、以下の公式ソースも参考になります。

※ 第二回以降の会場はさくらインターネット様から提供いただいております。


関西Lispユーザー会は、「関西を中心としたLispのユーザーグループ」らしいです。ただ関西でLispユーザーがわいわい集っているだけです。
初心者から仕事にしている方まで、そろっています。

ぜんぜん、怖くないですよー。

;;「クワインで遊ぶ」 nz_tcoder 第3回の発表より
((lambda (lambda) `(,lambda ',lambda))
      '(lambda (lambda) `(,lambda ',lambda)))

すぐに気持ちよくなりますよー。

;; 「shenの紹介」 カードウェル・トラビス 関西Lispユーザー会 第2回より
(-)
(define prefix?
  [] _ -> true
  [X | Y] [X | Z] -> (prefix? Y Z)
  _ _ -> false)

さあ、KOFでも人気だった、関西Lispユーザー会がオープンソースカンファレンス大阪2017にも参加します。
みんなで盛り上げていきましょう。

すべての十分に複雑なシステムは

後付けの、不完全な仕様とバグを持ち、遅い、Common Lispの半分の実装を含んでいる。という言葉がありましたが、C++はいったいどこを目指しているのでしょうか?

この記事はLispアドベントカレンダーの6日目です。

C++17が先日リリースされました。そのときに同僚のC++erは constexpr で盛り上がってました。コンパイル時計算にあった制限がへってコンパイル時計算が楽に書けるようになったとさわいでいました。C++の黒魔術師はレイトレーシングコンパイル時計算でやったとかなんとか。

コンパイル時計算といえば、どう考えてもLispの出番です。

がありますからね。

そういえば、boostというC++ライブラリにContext switching with call/ccというものがありますが、説明の一行目は

callcc() is the C++ equivalent to Scheme's call/cc operator. It captures the current continuation (the rest of the computation; code after callcc()) and triggers a context switch.

などと、Schemeのcall/ccだと言っています。ふーん。でも、Coroutine2はcallccより前に(C++11)作られているんですよね。不思議ですね。それなら素直にLispで書けばいいのにと思ってしまいますね。

関西Lispユーザー会のアドベントカレンダー

関西Lispユーザー会のアドベントカレンダーがちょっとピンチらしいので、とりあえずエントリーだけしてみた。

さて何を書くかはあとで考えよう。