2,640円 (税込) 2,640円 (税込) 2,640円 (税込) 2,640円 (税込) 2,640円 (税込) 2,640円 (税込) 2,640円 (税込) 2,640円 (税込) 3,080円 (税込) 3,080円 (税込) 3,080円 (税込) 3,080円 (税込) 3,080円 (税込) 3,080円 (税込) 3,080円 (税込) 3,080円 (税込)
AIderを使うと対話的にプログラムを書くことができる。 やはり非同期処理をするためだけに自分で処理系を書くとか正気じゃないので既存のLISP処理系を使って同じことをできるようにしてみる。 色々すったもんだはあったが、とりあえずMacではSBCLを使うのが正しいらしいのでSBCLをセットアップする $ brew install sbclで、SBCLだけあってもパッケージが管理できないので、QuickLispというパッケージ管理ツールを読み込んで設定する。これがなんか原始的でわかりにくいが、これが伝統の味というやつなのだろうか。 $ wget https://beta.quicklisp.org/quicklisp.lisp $ sbcl This is SBCL 2.4.7, an implementation of ANSI Common Lisp. More information a
common-lispで関数のスタイルについて認識してみた 改訂履歴 @nfunato 様よりご指摘を頂きました。LOOPマクロを利用した関数記述スタイルをconsしました。 はじめに 末尾再帰,継続,アクタ,コルーチン : セマンティックウェブ・ダイアリー 現時点で関数の書き方のスタイルとして、ざっくり4種類を認識しています。LOOPマクロでの関数記述スタイルを追加して、5種類の認識となります。 LOOPマクロ利用の関数 末尾再帰ではない再帰関数 末尾再帰の再帰関数 継続渡し map系関数の利用 2つの簡単な関数をそれぞれのスタイルで記述してみました。 iota関数 : pythonのrange関数のようなもの。 2bai関数 : リストの要素を2倍します。ただしリストの要素が3の倍数の場合は3倍します。 LOOPマクロ利用の関数 LOOPマクロは難解ですが、慣れてしまえばかなり強力なの
GNU Common Lisp (GCL) は、GNUプロジェクトによるCommon Lispコンパイラである。Kyoto Common Lispは直接の先祖にあたる。処理系は、Common LispのコードからCのコードを生成し、次にCコンパイラを呼び出すことでネイティブのオブジェクトコードを生成する。 GCLは、大規模プロジェクトにおいて実装言語としての採用の実績がある。代表的なものには、Maxima、AXIOM、HOL88、ACL2等の数式処理システムや自動定理証明器などがある。GCLは、11種の計算機アーキテクチャ上のLinux、FreeBSD、Solaris、macOS、Microsoft Windows等のOS上で稼動する。 GCLの最新の安定版リリースは2023年1月13日である[1]。
before https://github.com/gongo/org-redmine after https://github.com/emacsorphanage/org-redmine Emacs Orphanage ってなに? 直訳すると「Emacs孤児院」。 The Emacsorphanage also contains packages that are no longer maintained upstream, but which still have users or are still required by some other packages. In the orphanage they receive only limited maintenance. Emacs Orphanage 経緯 すべてこちらでやりとりしています。 github.com ざっくりまと
阿澄佳奈じゃない方のLISPについて処理系がライフゲーム上に実現されていたらしい事を知った。 Emacs系のエディタだと大概ライフゲームが付属しているのでLISP上で動くライフゲームに親しみはあるが、その逆であるライフゲーム上で動作するLISPとは何者なんだろうか。 またどうしたらそんなことが可能なのかが気になって調べていたが良く分からなかったので関連年表を作っていた。 1927年 マッカーシー(John McCarthy)誕生 1937年 コンウェイ(John Horton Conway)誕生 1941年 リッチー(Dennis MacAlistair Ritchie)誕生 1953年 ストールマン(Richard Matthew Stallman)誕生 1955年 パジトノフ(Alexey Pajitnov)誕生 1958年 マッカーシーによりLISPが考案される。 1970年 コンウ
Lispって凄いなと思うわけだが、昔からLispを使ってみようにも実用的な使い方に辿り着かなかった。Lispも使えないくせにハッカーとは何事だと怒られそうでビクビクする今日この頃。 いろんな人にプログラミングを説明するときに、実はLispが一番いいんじゃないかと思った。だって(+ 1 2)で1+2になるっていう法則さえわかれば、Lispってなんでもできるんだぜ。for文とかwhile文とか面倒な制御構造がないので説明しやすいのではないかと思った。そもそも、a=a+1が理解できないというプログラミングの初心者つまづきポイントあるあるが回避できるし。 ところがLispは世界で二番目に古いプログラミング言語なので、命令がC++やJavaScriptに慣れた人だと難しい。 やはりちょっと自分でも触ってみるかと人生で10回目くらいに思い立ったので、VisualStudio CodeでLispしてみる
概要 lispteatimeはShibuya.lispによるLispお茶会イベントです。お茶を飲みながら (なくてもよいです) 企画を楽しんだりLispの会話をするイベントです。これまでlispmeetupとして毎月発表の場を用意していましたが、昨今の時世の変化を鑑みて発表以外のこと(ハンズオン、ライブコーディングなど)もやってみようという試みです。 当面lispmeetupと交互に(つまり隔月で)開催していく予定です。 今月のテーマ 今月のテーマはライブコーディングです。自作のCommon Lisp製静的サイトジェネレータにroswellコマンドを追加します。t-sinが担当します。 Zoomのリンクについて 当日にShibuya.lispのSlack、あるいはconnpass経由でメールで告知されます。 Position paper(自己紹介スライド)について 冒頭での自己紹介の際に画
マサチューセッツ工科大学(MIT)で開発された人工知能(AI)用のプログラミング言語。list processorの略。1980年代にはLispを高速処理するLispマシンも開発された。プログラム自身とプログラムの扱うデータがどちらも同じリストとよばれる構造であるのが特徴。そのため、自動プログラミングなどの、プログラムをデータとして操作するプログラムが書ける。なお、Prolog(プロログ)もこれと同様の能力をもっている。 LispはさまざまなAIシステムの構築に用いられたほか、他のAI言語をLisp上につくる(つまり、その言語の処理系をLispで書く)のにも使われた。初期の例としては、マサチューセッツ工科大学(MIT)における、カール・ヒューイットCarl HewittによるPLANNERや、それを発展させたジェリー・サスマンGerald Jay Sussman(1947― )によるCON
この章では埋め込み言語としてPrologを実装する方法を説明する. 第19章ではデータベースに対する複雑なクエリに答えるプログラムを書く方法を示した. ここでは新たに要素を一つ加える. 規則,すなわち既に知られている事実から別の事実を推論できるようにする仕組みだ. 規則の集合は含意のツリーを定義する. 無限個の事実を含意する規則を扱うには, その含意ツリーで非決定的な検索を行わなければならない. Prologは埋め込み言語の素晴しい例になる. それはパターンマッチング,非決定性,規則の3要素を組み合わせたものだ. 第18,22章では最初の2つを独立に示した. 今すでに手にしているパターンマッチングと非決定的選択のためのオペレータの上に Prologを構築することで, 多層構造を持つ本物のボトムアップシステムの例が得られる. \reffig{fig:LayersOfAbstraction}に
Lispのインタプリタ―の作り方に関する参考書が紹介されていました。 処理系の作り方を通じて、関数型プログラミング言語の動作について理解が深まると思うので、時間があったら読んでみたいです。 zehnpaard.hatenablog.com 定番の「SICP」本 Anatomy of Lisp Lisp in Small Pieces Lisp System Implementation Functional Programming Application and Implementation Topics in Advanced Language Implementation その他 DSL作成のための基礎知識 Prologの実装方法 6冊の本が紹介されていました。 定番の「SICP」本 www.amazon.com 日本のAmazonでも売ってました。 Structure and Int
今度はVSCodeの前回とは別のCommon Lisp拡張である Alive - Visual Studio Marketplace を使ってみる。 前回のは現状インストール数6kくらいなのに対してこれはインストール数600くらいで少ないが、Using VSCode with Alive を見るかぎり機能的にはこちらの方が豊富そうに見える。 動作確認したバージョン Ubuntu : 20.04 roswell : 21.06.14.110(c0bc597) sbcl : 2.1.9 VSCode : 1.61.2 Alive : 0.2.4 インストール VSCode を開く Ctrl + P ext install rheller.alive シンタックスハイライト 発展途上の機能らしく、キーワードシンボル等をハイライトしない。 Roswellの設定 settings.jsonにREPL
この記事はLisp Advent Calendar 2016の3日目の記事です. 2日目の記事は「R7RS-largeについて」でした. 本記事はProject EulerのProblem1〜5のネタバレを含みます.ご注意ください 初めに 今までLISPは食わず嫌い的に敬遠していたのですが,最近大学の授業でSchemeを使う機会があり,いざちゃんと勉強してみると結構面白くて,ずぶずぶと沼にハマっていく音が聞こえてきました.ちなみに最近LoL本買っちゃいました😉 Schemeを最初に触ってから1ヶ月くらい経ったあたりでなんとなくProject Eulerを解いていたので,この記事ではそのコード片を紹介したいと思います.なお,本記事のコードは全てGitHubにあげています(今後も継続的にcommitしていく予定です). kagemiku/project-euler (カレンダーに登録してから
The Common Lisp Omnificent GUI, CLOG for short, uses web technology to produce graphical user interfaces for applications locally or remotely.
キャンセル・参加費用の払い戻しについて主催者からの説明: お申込み後のキャンセルはできません.セミナーについての説明をよくお読みいただき,十分ご検討の上お申し込みください.CONNPASS上でキャンセルしても,セミナー当日に不参加であったとしても参加費用は返却されません. セミナーの内容 こんにちは,初谷@PRINCIPIAです.突然ですがゴミ集め(GC)を作ってみたくありませんか? もしかしたら難しいというイメージがあるかもしれませんが,コードを書くこと自体はそれほどたいへんではありません.それでもゼロから言語処理系を作り,ラインタイムライブラリを作って,その中でゴミ集めを実装するのはそれなりの作業だし,はじめての人には迷うポイントがたくさんあるでしょう. そこで”あとはゴミ集めだけ” Lisp キットというのを作りました.名前のとおり,ゴミ集めだけ実装していない Lisp 処理系です.
上図に示すように、nconc はリストの最終セルの CDR 部を直接書き換えることで、引数のリストを連結しています。簡単な例を示しましょう。 * (setq x '(a b c)) (A B C) * ...
今年は町内会の役員業務に忙殺され、しばらくLispでのプログラム作成から離れていたら、「Lispってなんですか?」みたいな状態になってしまった。 年齢相応のボケも進み、気力も続かないため、過去に作成されたLispのゲームプログラムをリメイクして、老いた脳みそを活性化させることにする。 インターネットで、「良い物件」を物色していたらこんなサイトが見つかった。 http://matthieu.villeneuve.free.fr/dev/games/ 小手調べに「Boulder Dash」というゲームの構造を分析してみることにするが、「PAL」というライブラリを使用しているため、「Lispbuilder-SDL」で書き直すことで、Lispプログラムの再履修としよう。 まずは、ゲームの画面のみを表示するプログラムを「Lispbuilder-SDL」でリメイクするが、「Boulder Dash」を
導入 昨今の行列演算や数理最適化といったデータサイエンスの分野において、主要なライブラリやフレームワークはPythonやJuliaなど、広く人気を博していて尚且つ魅力的な言語に集中しています。ですが一昔(約40年)前は人工知能といえばLispだったのをご存知ですか?当時は記号論理学を用いた人工知能の研究が盛んで、LispやPrologはまさにそういった用途のための言語だったのです。しかし時代が進むにつれてそういった研究は少なくなり、代わりに大規模な行列などを簡単に取り扱える言語たちが主流になっていったというのがざっくりした今日までの歴史です。しかし記号理論学の影響を無しに考えてもCommon Lispを用いてデータサイエンスを行うメリットは大いにあると個人的に感じます。実は私はいわゆるLisperと言われる人種で普段から専らCommon Lispを用いて開発をしています。そんな私が考える今
(lambda (x) x)と(function (lambda (x) x)), #'(lambda (x) x)、どう書く?
とりあえず作り始めた。 github.com 基本戦略としては、まずは数値計算だけのコードをLLVM IRに変換するのを目的に: Lispコード→LispVal型データ構造→SSA IR→LLVM IR の流れでコンパイルしていく。 長期的にはLLVM IR上でLispValを表すStructを作る必要があるのかなーと漠然と考えているが、まだ先のことである。 かなり長い間、LLVM IRとにらめっこしていて「どうしたらASTからLLVMに変換できるだろう」と悩んでいたのだが、中間言語を間にかませると変換がわかりやすくなった。純粋な形でのAST→SSAの変換と、SSAをLLVM IRに特殊化させる変換をわけて考えるのがポイント。 REPLと違ってチュートリアルを再構築するわけではないので色々と手探りになるがかなり楽しみ。
github.com 作りました。 package-inferred-systemって何 簡単に言うと・・・ Common Lispではパッケージ名(言語上での名前空間)とモジュール(コンパイルする単位)とが分離しています 言い換えると,同じファイルにパッケージを複数入れる,といったことができます このため,パッケージ名からモジュールのパスを推測できません このためビルドする際は手動でファイル同士の依存関係を記述するか,全て1つのでかいファイルに収める必要がありました 規約としてパッケージ名とモジュール名とを1対1で対応付けたら依存関係書く必要ないじゃん,という発想で生まれたのがpackage-inferred-systemです 依存しているパッケージ名からビルドするべきファイル名が自明に定まるので,PerlのようにカジュアルにCommon Lispが書ける,というわけです。 packag
序文# 前回の記事では、パッケージの作り方を扱いました。パッケージを作ったら、今度は自分のEmacsに導入したいと考えるでしょう。これを行う方法もいろいろあります。 Emacsのパッケージマネージャを以下に列挙してみます。 GNU GuixやNix、aptなどの汎用パッケージマネージャは除いています。 中央集権型 package.el(標準) 分散型 el-get(ただしpackage.elを透過的に利用可能らしい) Cask elpaca straight.el quelpa この分類は、パッケージのビルドがどこで行われるかに着目しています。適当なレシピ、つまりパッケージ定義が与えられた下で、中央集権型はサーバーにおいてビルドされたパッケージをダウンロードするタイプ、分散型はローカルでビルドするタイプのパッケージマネージャです。 この二つのタイプに明確な優劣があるわけではなく、一長一短で
<blockquote class="hatena-bookmark-comment"><a class="comment-info" href="https://b.hatena.ne.jp/entry/4728865842637431588/comment/sirocco" data-user-id="sirocco" data-entry-url="https://b.hatena.ne.jp/entry/s/zehnpaard.hatenablog.com/entry/2022/12/01/132824" data-original-href="https://zehnpaard.hatenablog.com/entry/2022/12/01/132824" data-entry-favicon="https://cdn-ak2.favicon.st-hatena.com/64?u
GNU Emacs 28.1がリリース - Lispファイルのネイテイィブコンパイル機能や絵文字表示機能の大幅改善など 2022 4/05 GNU Emacs開発プロジェクトは4月4日(現地時間)、Emacsのメジャーバージョンアップ版「Emacs 28.1」をリリースしました。メジャーバージョンアップはEmacs 27.1以来2年ぶりで、現在公式サイトより最新版のソースコードをダウンロードすることができます。 主な新機能は以下の通りです。 Native compilation of Lisp files Text shaping with HarfBuzz and drawing with Cairo Support for loading Secure Computing filters Much improved display of Emoji and Emoji sequence
Twitterをやっていたら, id:anatofuz くんがおもしろ問題をやっていた.Perl入学式で出題されたらしい. anatofuz.hatenablog.com 問題はこういうの. 毎週火曜日のペアプロ講習用に作成した問題を昨晩の #Perl入学式 オンラインミーティングで紹介したので Twitter でも紹介。情勢が収束したらまた懇親会でピザを食べつつお題に興じたい。 pic.twitter.com/n68luVPNEg— OGATA Tetsuji (@xtetsuji) 2020年7月26日 大人気なくもやってみたくなりました. Perlはみんなやっているでしょうから,ループをごりごり回すのはCommon Lispの得意技(要出典)なので書いてみましょう. gist.github.com だいたいこういう感じになりました.loopマクロだとちょっと不足なのでiterateラ
概要 LISP(List Processor)とは、すべてのデータとコードを括弧で囲われた式として表現する、代表的な関数型プログラミング言語の一つ。一般には半世紀前に産み出されたオリジナルのLISP言語を含む数多くの派生言語の総称を表すことが多く、LISPの仕様を踏襲する個々の言語のことは「LISP方言」と呼ぶことが多い。 LISPでは空白で区切った要素の列を丸括弧 ( ) で括った「リスト」(list)を基本構造として、ほとんどありとあらゆるものをリストとして表現する。データの定義や計算式の記述、関数の定義や呼び出し、実行制御など、プログラム構成要素のほぼすべてをリストで表すことができ、データもコードも同じ記法で取り扱う。 数式のように括弧を入れ子状にすることでリストの要素としてリストを埋め込んで記述することができ、これを利用して複雑な処理を記述する。LISPのプログラムは入れ子(ネスト
40ants/40ants-critic: A wrapper around LISP-CRITIC which ... - GitHub 2022/02/20 · A wrapper around LISP-CRITIC which provides a better interface to analyze ASDF systems and a command-line interface. - 40ants/40ants-critic.
2024/03/05 · 18 Common Lisp; 19 Crystal; 20 D; 21 Delphi; 22 Dhall; 23 ... Z-combinator instead. The combinator here is ... Common Lisp. (defun Y (f) ((lambda (g) ...
Lisp Advent Calendar 10日目の記事です。 言語実装アドベントカレンダーの方も枠が空いていたのでその記事でもあります。 以前、valtanというJavaScriptを出力するCommon Lisp処理系を作っていました。 作っていた動機としてはReactを使ったwebアプリケーションをCommon Lispで書きたかったからです。 デモ React Tutorialにある三目並べをCommon Lispに移植したものをコンパイルし、動かしてるところです。 三目並べに対応するCommon Lispのコードはこれです。 ブートストラップ Common LispからJavaScriptにコンパイルするコードは全てCommon Lispで書きました。 最初に使っていたCommon Lisp処理系はsbclでしたが、ある程度動くようになってきてからはvaltan自身でvaltan
LispとUnixは合わせ鏡 Lispの 「'」 の記号の意味が分かりません… Stringにしてるんですか? というツイートを見ました。 また、以前「リストを作りたいだけなのにクォートしなければならない」という不満ツイートを見た記憶があります。 この問題は「LispとUnixは合わせ鏡である」という認識にたてば氷解します。 評価戦略 Unix系シェルにおいて「PATH」と「$PATH」は意味が異なります。 「PATH」はただの文字列ですが、「$PATH」は「PATH変数の値を参照する」という意味合いになります。 すなわちUnix系シェルはデフォルトでは評価をしない、文字列はそのまま文字列リテラルとする戦略をとり、文字列でなく変数として評価したい場合にのみ$という記号をprefixにつけるというシンタックスになっています。 翻ってLispではデフォルトで評価をする戦略をとっています。 「P
1. はじめに FFT(高速フーリエ変換)の話題です。 まずは、ただコピーして使えるやつを示します。 そのあと長々と説明します。 (defun fftcore (v n sign) ;; bit reverse (let (a b y) (dotimes (x n) (setq a (ash n -1) y 0 b x) (do () ((zerop a)) (setq y (logior (ash y 1) (logand b 1))) (setq b (ash b -1)) (setq a (ash a -1))) (when (< x y) (rotatef (elt v x) (elt v y))))) ;; fft (do* ((p0 (float (* sign 2.0L0 pi) sign)) (n2 (ash n -1)) (a n2 (ash a -1))) ((< a
Common Lisp で作る micro Scheme 今回は Common Lisp で小さな Scheme インタプリタ "micro Scheme" を作ってみましょう。 ●Scheme の特徴 最初に Scheme について簡単に説明します。Scheme は 1975 年に Gerald J.Sussman と Guy L. Steele Jr. によって作成された Lisp の方言です。伝統的な Lisp はダイナミックスコープですが、Scheme はレキシカルスコープを採用しています。その後、Common Lisp でもレキシカルスコープが採用されました。 関数型言語の場合、関数は他のデータと同等に扱うことができます。つまり、関数を変数に代入したり、関数を引数として渡すことができます。また、関数を値として返すこともできます。ところが、Common Lisp の関数はちょっと変
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く