octahedron

LemとSKKとCommon Lispでたたかうプログラマのブログ

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

2018年振り返り

2018年振り返り 今年はいろいろあったので、振り返りしてみようという気になった。触発されたというのもある。 働いた 2017年末にはなんか落ち込みが発生して自信をかなり損なっていた時期があったけど、2018年1月からは働きはじめた。対話AIをやっている会…

セルオートマトン暗号(未完)

遅刻してますが、この記事はセルオートマトンアドベントカレンダーの23日目の記事です。 あらまし 離散的な力学系であるところのセルオートマトンは、カオス的なふるまいをすることで知られています。カオス的であるなら、そのふるまいを暗号学的なアレとか…

Common Lisp (Roswell)とDockerで実行可能ファイルをビルド

この記事はLispアドベントカレンダーの7日目の記事です。 ざっくり Common Lispの処理系マネージャ・スクリプティング環境であるRoswellとライブラリバージョン固定化ツールQlotを用いて、 Common Lispのプロジェクト(システム)の実行可能バイナリを作成し…

Common Lispと時間とタイムゾーン

Common Lispと時間とタイムゾーン この記事はLispアドベントカレンダーの4日目の記事です。 あらまし Common Lispで日時を扱う場合、ANSI仕様には日時のための関数がいくつか定められていますが極めて基本的なものしか存在しません。日時から文字列への変換…

Forthを実装する

Forthを実装する スタックベース変数いらずのふしぎなプログラミング言語、ForthをCommon Lispで実装しました。というか絶賛開発中のufというもので、これです。 github.com 執筆時点で 整数値のパース 基本的なスタック操作命令と出力 ワード(Forthにおけ…

第7回関西Lispユーザ会に行ってきた

その昔、Lispを実行することに特化したマシンがありました。Lispマシンと呼ばれたそのマシンは、当時の人工知能ブームの後押しを受けて盛んに製作されていたそうです。MIT AIラボのCONSマシンやCADRマシン、それに日本でもいくつかつくられたようです。 Lisp…

ハッシュテーブル考

このごろ、ハッシュテーブルの実装について考えていました。 それはひとつに「Common Lispでいつも使っているハッシュテーブルってどうなっているの?」という疑問があり、もうひとつには「オレオレLispを実装するときホスト言語によってはハッシュテーブル…

Nikoに届いていた謎のリクエストを分析する

Nikoに届いていた謎のリクエストを分析する Nikoを社内で運用していたところ、以下のような謎のリクエストがログに残っていました(被害者かもしれないので、いちおう出てくるIPは隠しています): xx.xx.xx.xx - [24/Jul/2018:04:52:44 +00:00] "GET /login.…

Niko --- GitHub上のメンションをSlackでお知らせ

Niko NikoというGitHub上のメンションをSlackで教えてくれるソフトウェアをつくりました。 もちろんCommon Lisp製です github.com NikoはGitHubのWebhookとして動作し、GitHub上のissueやプルリクエストの本文や、それらに対するコメントやレビューの中のメ…

木の実を埋めなかったので拾われないLisp

TL; DR Lispをつくろうとして失敗しました。ちーん。 どんなものをつくろうとしたか Common Lispのすごく小さなサブセットをつくろうとしました。それをつくることで、普段使って理解した気になっているCommon Lispのパッケージやリードテーブル、ひいては実…

インタラクティブシなREPLをWebページ上に実装する

自分で言語を実装したとき、できればWebページ上でさっと試せるとカッコいいなと思いますよね。たとえばこんな感じで: http://golang-jp.org/ https://islisp.js.org/ https://jscl-project.github.io/ https://www.haskell.org/ 今回ぼくは自作の言語に対し…

Nimに入門して簡単なアプリケーションを書くまで

TL; DR Nimに入門してアプリケーションをつくるまでの道筋を書きました。 Nimってどんな言語? NimはPythonっぽい見た目をもつ、コンパイラ言語です。静的型付きで、ネイティブコードを吐き、あといちおうメタプログラミングもできるという言語です。 このsl…