#purelisp_sh search results

howtowriteaprogram.blogspot.com/2010/11/lisp-i… このページにあるByte誌1988年2月号のSchemeサンプルというのがわかりやすかったので我が #PureLISP_sh のサンプルとしても…と思ったけど数値演算どころか数値そのものが基本データとして存在しないので無理やりこうしてみた.いや,cdr-byとかに変えればいいだけだけど.

ytaki0801's tweet image. howtowriteaprogram.blogspot.com/2010/11/lisp-i…
このページにあるByte誌1988年2月号のSchemeサンプルというのがわかりやすかったので我が #PureLISP_sh のサンプルとしても…と思ったけど数値演算どころか数値そのものが基本データとして存在しないので無理やりこうしてみた.いや,cdr-byとかに変えればいいだけだけど.

シェルスクリプト版 #PureLISP_sh ではそれなりに処理がもたついていたNorvig氏の古典パターンマッチング処理の例も,C言語版だと一瞬だなあ.さて,これを #EmacsLisp に書き換えて講義資料にしないと.cl-sublisとかあるから #Scheme よりは楽だけど. #LISP #CommonLisp #programming

ytaki0801's tweet image. シェルスクリプト版 #PureLISP_sh ではそれなりに処理がもたついていたNorvig氏の古典パターンマッチング処理の例も,C言語版だと一瞬だなあ.さて,これを #EmacsLisp に書き換えて講義資料にしないと.cl-sublisとかあるから #Scheme よりは楽だけど. #LISP #CommonLisp #programming

cdr-byとやらにしてみた例.うん,面白くない…. #PureLISP_sh #LISP #Scheme #programming

ytaki0801's tweet image. cdr-byとやらにしてみた例.うん,面白くない…. #PureLISP_sh #LISP #Scheme #programming

howtowriteaprogram.blogspot.com/2010/11/lisp-i… このページにあるByte誌1988年2月号のSchemeサンプルというのがわかりやすかったので我が #PureLISP_sh のサンプルとしても…と思ったけど数値演算どころか数値そのものが基本データとして存在しないので無理やりこうしてみた.いや,cdr-byとかに変えればいいだけだけど.

ytaki0801's tweet image. howtowriteaprogram.blogspot.com/2010/11/lisp-i…
このページにあるByte誌1988年2月号のSchemeサンプルというのがわかりやすかったので我が #PureLISP_sh のサンプルとしても…と思ったけど数値演算どころか数値そのものが基本データとして存在しないので無理やりこうしてみた.いや,cdr-byとかに変えればいいだけだけど.


うん,全て末尾再帰にしたら普通に動く.reverseがウザイが.よし,#PureLISP_sh では非末尾再帰を悪としよう(バグを仕様化する開発者).しかし,ここまでテストケース(仮)が揃えば,いつもならバグ箇所がすぐに見つかるのだが….

ytaki0801's tweet image. うん,全て末尾再帰にしたら普通に動く.reverseがウザイが.よし,#PureLISP_sh では非末尾再帰を悪としよう(バグを仕様化する開発者).しかし,ここまでテストケース(仮)が揃えば,いつもならバグ箇所がすぐに見つかるのだが….

てか,なんなんだこの変な現象….末尾再帰じゃないmap1が通常処理した後に何かやらかして,マクロ展開時だけオール大域変数の仕組みが悪さしてると思うのだけれども.見たまんまか.誰だ,こんな変なの作ったの!(鏡を見てみる)

ytaki0801's tweet image. てか,なんなんだこの変な現象….末尾再帰じゃないmap1が通常処理した後に何かやらかして,マクロ展開時だけオール大域変数の仕組みが悪さしてると思うのだけれども.見たまんまか.誰だ,こんな変なの作ったの!(鏡を見てみる)


ちなみに,我らが #PureLISP_sh#クワイン の例.トークンが原初 #LISP 評価器からの小文字流用だしなあ. #シェルスクリプト

ytaki0801's tweet image. ちなみに,我らが #PureLISP_sh の #クワイン の例.トークンが原初 #LISP 評価器からの小文字流用だしなあ. #シェルスクリプト

先の評価器で #クワイン のコードも追加しようかなと思ったけど,quoteの扱いが母艦の #Scheme 処理系によってまちまちのような….#CommonLisp は一択なのだけれど.まあ,同じ記述に収束(?)するという意味ではどちらでもいいのだけど. #LISP #programming #プログラミング

ytaki0801's tweet image. 先の評価器で #クワイン のコードも追加しようかなと思ったけど,quoteの扱いが母艦の #Scheme 処理系によってまちまちのような….#CommonLisp は一択なのだけれど.まあ,同じ記述に収束(?)するという意味ではどちらでもいいのだけど. #LISP #programming #プログラミング
ytaki0801's tweet image. 先の評価器で #クワイン のコードも追加しようかなと思ったけど,quoteの扱いが母艦の #Scheme 処理系によってまちまちのような….#CommonLisp は一択なのだけれど.まあ,同じ記述に収束(?)するという意味ではどちらでもいいのだけど. #LISP #programming #プログラミング
ytaki0801's tweet image. 先の評価器で #クワイン のコードも追加しようかなと思ったけど,quoteの扱いが母艦の #Scheme 処理系によってまちまちのような….#CommonLisp は一択なのだけれど.まあ,同じ記述に収束(?)するという意味ではどちらでもいいのだけど. #LISP #programming #プログラミング


. @ko1nksm さんのおかげで,Brainf**kインタプリタをほぼシェルスクリプト(POSIX準拠)のみで作成.そして #PureLISP_sh 同様に #Zenn 記事に. zenn.dev/ytaki0801/arti… #zenn


ちなみに,PureLISP単体ならPOSIXどころかANSI仕様のCライブラリしか使ってないので,リポジトリにある"PureLISP.c"と"PureLISP.h"をWindowsにコピペしてきてtccでコンパイルしても普通に動く.終了はCtrl-c. #LISP #PureLISP_sh #programming #プログラミング

ytaki0801's tweet image. ちなみに,PureLISP単体ならPOSIXどころかANSI仕様のCライブラリしか使ってないので,リポジトリにある"PureLISP.c"と"PureLISP.h"をWindowsにコピペしてきてtccでコンパイルしても普通に動く.終了はCtrl-c. #LISP #PureLISP_sh #programming #プログラミング

ところで,タグシステムは我らが #PureLISP_sh というか純LISP仕様でももちろん定義・実行可能なんだけど,あんまり面白くないんだよなー.できてあたりまえといいますか.とはいえ,単独でチューリング完全のラムダ式のみで定義するのは骨が折れそう.チャーチ数から始めないとなんだよなあ.

ytaki0801's tweet image. ところで,タグシステムは我らが #PureLISP_sh というか純LISP仕様でももちろん定義・実行可能なんだけど,あんまり面白くないんだよなー.できてあたりまえといいますか.とはいえ,単独でチューリング完全のラムダ式のみで定義するのは骨が折れそう.チャーチ数から始めないとなんだよなあ.

少し話を戻して,2-タグシステム+コラッツ関数のお手軽実装まとめ.Julia言語の要global指定に引っかかってしまった….そしてしれっとC++版が混ざる.文字列操作やマップが標準装備で(C言語よりもはるかに)簡単なんだもん.次はJavaかGo言語かなあ.というか,超久しぶりにQiita企画で募る?

ytaki0801's tweet image. 少し話を戻して,2-タグシステム+コラッツ関数のお手軽実装まとめ.Julia言語の要global指定に引っかかってしまった….そしてしれっとC++版が混ざる.文字列操作やマップが標準装備で(C言語よりもはるかに)簡単なんだもん.次はJavaかGo言語かなあ.というか,超久しぶりにQiita企画で募る?
ytaki0801's tweet image. 少し話を戻して,2-タグシステム+コラッツ関数のお手軽実装まとめ.Julia言語の要global指定に引っかかってしまった….そしてしれっとC++版が混ざる.文字列操作やマップが標準装備で(C言語よりもはるかに)簡単なんだもん.次はJavaかGo言語かなあ.というか,超久しぶりにQiita企画で募る?


うむ,駅前カフェでは不動点コンビネータのコーディングがよく似合う(勘違い).しかし,C言語でネイティブバイナリにするとやっぱり速いな.末尾再帰最適化すらないので(fibonacci 23)相当でセグフォ吐くけど. #PureLISP_sh #LISP #programming

ytaki0801's tweet image. うむ,駅前カフェでは不動点コンビネータのコーディングがよく似合う(勘違い).しかし,C言語でネイティブバイナリにするとやっぱり速いな.末尾再帰最適化すらないので(fibonacci 23)相当でセグフォ吐くけど. #PureLISP_sh #LISP #programming

なお,#JavaScript#letLISP はこちらでお試し可能. ytaki0801.github.io/letLISP.html #PureLISP_sh #fpLISP との違いはread(と形だけのwrite)への対応.JavaScript版fpLISPを突貫工事で書き直しただけなのでコードが汚い汚い….後でリファクタリングしないと.#LISP #プログラミング #programming


Kilo-PureLISPについて追記.シェルスクリプト版はコマンドラインREPL,JavaScript版はHTMLテキスト入出力,C言語版はスクリーンエディタ,といい感じに揃ったかな. #PureLISP_sh #LISP #programming #プログラミング qiita.com/ytaki0801/item… #Qiita


一連のAM放送受信のあれこれ、 #PureLISP_sh の時みたくそろそろどっかに記事としてまとめたいのだけど,適切な投稿サイトあるのかなあ.無理矢理SDR絡めてQiitaかZennに投稿しちまうか?(やめなさい)

AM受信回路の構成パターン改二.構成回路ごとに整理.残念ながら,LED検波はリストラ. #鉱石ラジオ #塹壕ラジオ #CrystalRadio

ytaki0801's tweet image. AM受信回路の構成パターン改二.構成回路ごとに整理.残念ながら,LED検波はリストラ.
#鉱石ラジオ #塹壕ラジオ #CrystalRadio


paiza.io あたりでもダメで,Web版 #PureLISP_sh ほどに操作環境を単純化しないと厳しいあたり,キーボードはもちろんマウス操作も縁遠くなってるんだろうなあ,イマドキの学生は(年寄り発言).


Kilo-PureLISPのDocker imagesビルド完了.いつものようにamd64/arm64/armv7マルチ対応の上にイメージが展開後でも2MB前後しかないという.そしてサンプルコード読み込み後のKiloがいきなり起動する鬼畜仕様(shを付ければおっけー). #LISP #PureLISP_sh #programming github.com/ytaki0801/Kilo…


#Zenn#PureLISP_sh 記事のいいねが急に増えたな…と思ったら,週末にはてなブクマ&相応の数のTwitter RTがされてた.楽しんでもらえてるようでなにより. b.hatena.ne.jp/entry/s/zenn.d… #LISP #シェルスクリプト


末尾再帰最適化実装がようやく終わった(と思う)のでマイナーバージョンアップ.仕様的には変わってないけど. #PureLISP_sh #LISP #shellscript #シェルスクリプト github.com/ytaki0801/Pure…


あとは #S式 を活用したメタ…というかマクロだけど,Julia見てると別にS式でさえなくてもいっかーという. ということで(?),次はダイナミックスコープ&角括弧カンマ配列&アトム判定なしのマクロ構文あり評価器を検討してみようかなと.マクロは #PureLISP_sh シリーズを参考にすれば….

で,#超循環評価器 についても,別にコンスセルに基づく #S式 でなくても連結リストであればなんとかなるし,レキシカルスコープの #ラムダ式 でなくてもというか発端はダイナミックスコープだったわけだし.



#C言語#fpLISP 追加.これもKilo組込用とかに作ってあった #PureLISP_sh のC言語版を修正・機能追加しただけ.アトムの整数判定めんどくさかったけど.そして,例によってガーベージコレクションなし.メモリ16GB+tccでtarai(12,6,0)かましたら酷いことになった…. github.com/ytaki0801/fpLI…

github.com

GitHub - ytaki0801/fpLISP: fpLISP: A minimum LISP interpreter for functional programming

fpLISP: A minimum LISP interpreter for functional programming - ytaki0801/fpLISP


C言語版 #PureLISP_sh だけど,Norvig氏のlispy改良版を真似た末尾再帰最適化を実装済だったり.で,本家 #シェルスクリプト 版も概ねできてるんだけど,マクロ展開まわりのバグがどうにも解消できない….既に末尾再帰型フィボナッチ数15の処理が3/4の時間に短縮されてるんだけどなあ(どんぐり).


一連のAM放送受信のあれこれ、 #PureLISP_sh の時みたくそろそろどっかに記事としてまとめたいのだけど,適切な投稿サイトあるのかなあ.無理矢理SDR絡めてQiitaかZennに投稿しちまうか?(やめなさい)

AM受信回路の構成パターン改二.構成回路ごとに整理.残念ながら,LED検波はリストラ. #鉱石ラジオ #塹壕ラジオ #CrystalRadio

ytaki0801's tweet image. AM受信回路の構成パターン改二.構成回路ごとに整理.残念ながら,LED検波はリストラ.
#鉱石ラジオ #塹壕ラジオ #CrystalRadio


. @ko1nksm さんのおかげで,Brainf**kインタプリタをほぼシェルスクリプト(POSIX準拠)のみで作成.そして #PureLISP_sh 同様に #Zenn 記事に. zenn.dev/ytaki0801/arti… #zenn


ところで,タグシステムは我らが #PureLISP_sh というか純LISP仕様でももちろん定義・実行可能なんだけど,あんまり面白くないんだよなー.できてあたりまえといいますか.とはいえ,単独でチューリング完全のラムダ式のみで定義するのは骨が折れそう.チャーチ数から始めないとなんだよなあ.

ytaki0801's tweet image. ところで,タグシステムは我らが #PureLISP_sh というか純LISP仕様でももちろん定義・実行可能なんだけど,あんまり面白くないんだよなー.できてあたりまえといいますか.とはいえ,単独でチューリング完全のラムダ式のみで定義するのは骨が折れそう.チャーチ数から始めないとなんだよなあ.

少し話を戻して,2-タグシステム+コラッツ関数のお手軽実装まとめ.Julia言語の要global指定に引っかかってしまった….そしてしれっとC++版が混ざる.文字列操作やマップが標準装備で(C言語よりもはるかに)簡単なんだもん.次はJavaかGo言語かなあ.というか,超久しぶりにQiita企画で募る?

ytaki0801's tweet image. 少し話を戻して,2-タグシステム+コラッツ関数のお手軽実装まとめ.Julia言語の要global指定に引っかかってしまった….そしてしれっとC++版が混ざる.文字列操作やマップが標準装備で(C言語よりもはるかに)簡単なんだもん.次はJavaかGo言語かなあ.というか,超久しぶりにQiita企画で募る?
ytaki0801's tweet image. 少し話を戻して,2-タグシステム+コラッツ関数のお手軽実装まとめ.Julia言語の要global指定に引っかかってしまった….そしてしれっとC++版が混ざる.文字列操作やマップが標準装備で(C言語よりもはるかに)簡単なんだもん.次はJavaかGo言語かなあ.というか,超久しぶりにQiita企画で募る?


paiza.io あたりでもダメで,Web版 #PureLISP_sh ほどに操作環境を単純化しないと厳しいあたり,キーボードはもちろんマウス操作も縁遠くなってるんだろうなあ,イマドキの学生は(年寄り発言).


なお,#JavaScript#letLISP はこちらでお試し可能. ytaki0801.github.io/letLISP.html #PureLISP_sh #fpLISP との違いはread(と形だけのwrite)への対応.JavaScript版fpLISPを突貫工事で書き直しただけなのでコードが汚い汚い….後でリファクタリングしないと.#LISP #プログラミング #programming


これまでの #PureLISP_sh #fpLISP #btLISP についてウチの研究彙報向け原稿としてまとめてるんだけど,基本構文のみの #Python 記述が擬似コード相当として十分使えるレベルなのが助かる.そういう目的も兼ねて作られたんだろうけど,#Pascal あたりと比べてもわかりやすいのが興味深い.


#C言語#fpLISP 追加.これもKilo組込用とかに作ってあった #PureLISP_sh のC言語版を修正・機能追加しただけ.アトムの整数判定めんどくさかったけど.そして,例によってガーベージコレクションなし.メモリ16GB+tccでtarai(12,6,0)かましたら酷いことになった…. github.com/ytaki0801/fpLI…

github.com

GitHub - ytaki0801/fpLISP: fpLISP: A minimum LISP interpreter for functional programming

fpLISP: A minimum LISP interpreter for functional programming - ytaki0801/fpLISP


あとは #S式 を活用したメタ…というかマクロだけど,Julia見てると別にS式でさえなくてもいっかーという. ということで(?),次はダイナミックスコープ&角括弧カンマ配列&アトム判定なしのマクロ構文あり評価器を検討してみようかなと.マクロは #PureLISP_sh シリーズを参考にすれば….

で,#超循環評価器 についても,別にコンスセルに基づく #S式 でなくても連結リストであればなんとかなるし,レキシカルスコープの #ラムダ式 でなくてもというか発端はダイナミックスコープだったわけだし.



ちなみに,我らが #PureLISP_sh#クワイン の例.トークンが原初 #LISP 評価器からの小文字流用だしなあ. #シェルスクリプト

ytaki0801's tweet image. ちなみに,我らが #PureLISP_sh の #クワイン の例.トークンが原初 #LISP 評価器からの小文字流用だしなあ. #シェルスクリプト

先の評価器で #クワイン のコードも追加しようかなと思ったけど,quoteの扱いが母艦の #Scheme 処理系によってまちまちのような….#CommonLisp は一択なのだけれど.まあ,同じ記述に収束(?)するという意味ではどちらでもいいのだけど. #LISP #programming #プログラミング

ytaki0801's tweet image. 先の評価器で #クワイン のコードも追加しようかなと思ったけど,quoteの扱いが母艦の #Scheme 処理系によってまちまちのような….#CommonLisp は一択なのだけれど.まあ,同じ記述に収束(?)するという意味ではどちらでもいいのだけど. #LISP #programming #プログラミング
ytaki0801's tweet image. 先の評価器で #クワイン のコードも追加しようかなと思ったけど,quoteの扱いが母艦の #Scheme 処理系によってまちまちのような….#CommonLisp は一択なのだけれど.まあ,同じ記述に収束(?)するという意味ではどちらでもいいのだけど. #LISP #programming #プログラミング
ytaki0801's tweet image. 先の評価器で #クワイン のコードも追加しようかなと思ったけど,quoteの扱いが母艦の #Scheme 処理系によってまちまちのような….#CommonLisp は一択なのだけれど.まあ,同じ記述に収束(?)するという意味ではどちらでもいいのだけど. #LISP #programming #プログラミング


#Zenn#PureLISP_sh 記事のいいねが急に増えたな…と思ったら,週末にはてなブクマ&相応の数のTwitter RTがされてた.楽しんでもらえてるようでなにより. b.hatena.ne.jp/entry/s/zenn.d… #LISP #シェルスクリプト


シェルスクリプト版 #PureLISP_sh ではそれなりに処理がもたついていたNorvig氏の古典パターンマッチング処理の例も,C言語版だと一瞬だなあ.さて,これを #EmacsLisp に書き換えて講義資料にしないと.cl-sublisとかあるから #Scheme よりは楽だけど. #LISP #CommonLisp #programming

ytaki0801's tweet image. シェルスクリプト版 #PureLISP_sh ではそれなりに処理がもたついていたNorvig氏の古典パターンマッチング処理の例も,C言語版だと一瞬だなあ.さて,これを #EmacsLisp に書き換えて講義資料にしないと.cl-sublisとかあるから #Scheme よりは楽だけど. #LISP #CommonLisp #programming

cdr-byとやらにしてみた例.うん,面白くない…. #PureLISP_sh #LISP #Scheme #programming

ytaki0801's tweet image. cdr-byとやらにしてみた例.うん,面白くない…. #PureLISP_sh #LISP #Scheme #programming

howtowriteaprogram.blogspot.com/2010/11/lisp-i… このページにあるByte誌1988年2月号のSchemeサンプルというのがわかりやすかったので我が #PureLISP_sh のサンプルとしても…と思ったけど数値演算どころか数値そのものが基本データとして存在しないので無理やりこうしてみた.いや,cdr-byとかに変えればいいだけだけど.

ytaki0801's tweet image. howtowriteaprogram.blogspot.com/2010/11/lisp-i…
このページにあるByte誌1988年2月号のSchemeサンプルというのがわかりやすかったので我が #PureLISP_sh のサンプルとしても…と思ったけど数値演算どころか数値そのものが基本データとして存在しないので無理やりこうしてみた.いや,cdr-byとかに変えればいいだけだけど.


howtowriteaprogram.blogspot.com/2010/11/lisp-i… このページにあるByte誌1988年2月号のSchemeサンプルというのがわかりやすかったので我が #PureLISP_sh のサンプルとしても…と思ったけど数値演算どころか数値そのものが基本データとして存在しないので無理やりこうしてみた.いや,cdr-byとかに変えればいいだけだけど.

ytaki0801's tweet image. howtowriteaprogram.blogspot.com/2010/11/lisp-i…
このページにあるByte誌1988年2月号のSchemeサンプルというのがわかりやすかったので我が #PureLISP_sh のサンプルとしても…と思ったけど数値演算どころか数値そのものが基本データとして存在しないので無理やりこうしてみた.いや,cdr-byとかに変えればいいだけだけど.

Kilo-PureLISPのDocker imagesビルド完了.いつものようにamd64/arm64/armv7マルチ対応の上にイメージが展開後でも2MB前後しかないという.そしてサンプルコード読み込み後のKiloがいきなり起動する鬼畜仕様(shを付ければおっけー). #LISP #PureLISP_sh #programming github.com/ytaki0801/Kilo…


Kilo-PureLISPについて追記.シェルスクリプト版はコマンドラインREPL,JavaScript版はHTMLテキスト入出力,C言語版はスクリーンエディタ,といい感じに揃ったかな. #PureLISP_sh #LISP #programming #プログラミング qiita.com/ytaki0801/item… #Qiita


末尾再帰最適化実装がようやく終わった(と思う)のでマイナーバージョンアップ.仕様的には変わってないけど. #PureLISP_sh #LISP #shellscript #シェルスクリプト github.com/ytaki0801/Pure…


うん,全て末尾再帰にしたら普通に動く.reverseがウザイが.よし,#PureLISP_sh では非末尾再帰を悪としよう(バグを仕様化する開発者).しかし,ここまでテストケース(仮)が揃えば,いつもならバグ箇所がすぐに見つかるのだが….

ytaki0801's tweet image. うん,全て末尾再帰にしたら普通に動く.reverseがウザイが.よし,#PureLISP_sh では非末尾再帰を悪としよう(バグを仕様化する開発者).しかし,ここまでテストケース(仮)が揃えば,いつもならバグ箇所がすぐに見つかるのだが….

てか,なんなんだこの変な現象….末尾再帰じゃないmap1が通常処理した後に何かやらかして,マクロ展開時だけオール大域変数の仕組みが悪さしてると思うのだけれども.見たまんまか.誰だ,こんな変なの作ったの!(鏡を見てみる)

ytaki0801's tweet image. てか,なんなんだこの変な現象….末尾再帰じゃないmap1が通常処理した後に何かやらかして,マクロ展開時だけオール大域変数の仕組みが悪さしてると思うのだけれども.見たまんまか.誰だ,こんな変なの作ったの!(鏡を見てみる)


C言語版 #PureLISP_sh だけど,Norvig氏のlispy改良版を真似た末尾再帰最適化を実装済だったり.で,本家 #シェルスクリプト 版も概ねできてるんだけど,マクロ展開まわりのバグがどうにも解消できない….既に末尾再帰型フィボナッチ数15の処理が3/4の時間に短縮されてるんだけどなあ(どんぐり).


うむ,駅前カフェでは不動点コンビネータのコーディングがよく似合う(勘違い).しかし,C言語でネイティブバイナリにするとやっぱり速いな.末尾再帰最適化すらないので(fibonacci 23)相当でセグフォ吐くけど. #PureLISP_sh #LISP #programming

ytaki0801's tweet image. うむ,駅前カフェでは不動点コンビネータのコーディングがよく似合う(勘違い).しかし,C言語でネイティブバイナリにするとやっぱり速いな.末尾再帰最適化すらないので(fibonacci 23)相当でセグフォ吐くけど. #PureLISP_sh #LISP #programming

No results for "#purelisp_sh"

#PureLISP_sh#Docker #Busybox base imageに組み込んで #DockerHub で公開する #GitHub Actionsを設定. #POSIX #シェルスクリプト ならではのマルチアーキテクチャ対応&1MB程度のイメージサイズ. #LISP #programming #プログラミング hub.docker.com/r/ytaki0801/pl…

ytaki0801's tweet image. #PureLISP_sh を #Docker #Busybox base imageに組み込んで #DockerHub で公開する #GitHub Actionsを設定. #POSIX #シェルスクリプト ならではのマルチアーキテクチャ対応&1MB程度のイメージサイズ. #LISP #programming #プログラミング 

hub.docker.com/r/ytaki0801/pl…
ytaki0801's tweet image. #PureLISP_sh を #Docker #Busybox base imageに組み込んで #DockerHub で公開する #GitHub Actionsを設定. #POSIX #シェルスクリプト ならではのマルチアーキテクチャ対応&1MB程度のイメージサイズ. #LISP #programming #プログラミング 

hub.docker.com/r/ytaki0801/pl…

howtowriteaprogram.blogspot.com/2010/11/lisp-i… このページにあるByte誌1988年2月号のSchemeサンプルというのがわかりやすかったので我が #PureLISP_sh のサンプルとしても…と思ったけど数値演算どころか数値そのものが基本データとして存在しないので無理やりこうしてみた.いや,cdr-byとかに変えればいいだけだけど.

ytaki0801's tweet image. howtowriteaprogram.blogspot.com/2010/11/lisp-i…
このページにあるByte誌1988年2月号のSchemeサンプルというのがわかりやすかったので我が #PureLISP_sh のサンプルとしても…と思ったけど数値演算どころか数値そのものが基本データとして存在しないので無理やりこうしてみた.いや,cdr-byとかに変えればいいだけだけど.

cdr-byとやらにしてみた例.うん,面白くない…. #PureLISP_sh #LISP #Scheme #programming

ytaki0801's tweet image. cdr-byとやらにしてみた例.うん,面白くない…. #PureLISP_sh #LISP #Scheme #programming

howtowriteaprogram.blogspot.com/2010/11/lisp-i… このページにあるByte誌1988年2月号のSchemeサンプルというのがわかりやすかったので我が #PureLISP_sh のサンプルとしても…と思ったけど数値演算どころか数値そのものが基本データとして存在しないので無理やりこうしてみた.いや,cdr-byとかに変えればいいだけだけど.

ytaki0801's tweet image. howtowriteaprogram.blogspot.com/2010/11/lisp-i…
このページにあるByte誌1988年2月号のSchemeサンプルというのがわかりやすかったので我が #PureLISP_sh のサンプルとしても…と思ったけど数値演算どころか数値そのものが基本データとして存在しないので無理やりこうしてみた.いや,cdr-byとかに変えればいいだけだけど.


ちなみに,我らが #PureLISP_sh#クワイン の例.トークンが原初 #LISP 評価器からの小文字流用だしなあ. #シェルスクリプト

ytaki0801's tweet image. ちなみに,我らが #PureLISP_sh の #クワイン の例.トークンが原初 #LISP 評価器からの小文字流用だしなあ. #シェルスクリプト

先の評価器で #クワイン のコードも追加しようかなと思ったけど,quoteの扱いが母艦の #Scheme 処理系によってまちまちのような….#CommonLisp は一択なのだけれど.まあ,同じ記述に収束(?)するという意味ではどちらでもいいのだけど. #LISP #programming #プログラミング

ytaki0801's tweet image. 先の評価器で #クワイン のコードも追加しようかなと思ったけど,quoteの扱いが母艦の #Scheme 処理系によってまちまちのような….#CommonLisp は一択なのだけれど.まあ,同じ記述に収束(?)するという意味ではどちらでもいいのだけど. #LISP #programming #プログラミング
ytaki0801's tweet image. 先の評価器で #クワイン のコードも追加しようかなと思ったけど,quoteの扱いが母艦の #Scheme 処理系によってまちまちのような….#CommonLisp は一択なのだけれど.まあ,同じ記述に収束(?)するという意味ではどちらでもいいのだけど. #LISP #programming #プログラミング
ytaki0801's tweet image. 先の評価器で #クワイン のコードも追加しようかなと思ったけど,quoteの扱いが母艦の #Scheme 処理系によってまちまちのような….#CommonLisp は一択なのだけれど.まあ,同じ記述に収束(?)するという意味ではどちらでもいいのだけど. #LISP #programming #プログラミング


シェルスクリプト版 #PureLISP_sh ではそれなりに処理がもたついていたNorvig氏の古典パターンマッチング処理の例も,C言語版だと一瞬だなあ.さて,これを #EmacsLisp に書き換えて講義資料にしないと.cl-sublisとかあるから #Scheme よりは楽だけど. #LISP #CommonLisp #programming

ytaki0801's tweet image. シェルスクリプト版 #PureLISP_sh ではそれなりに処理がもたついていたNorvig氏の古典パターンマッチング処理の例も,C言語版だと一瞬だなあ.さて,これを #EmacsLisp に書き換えて講義資料にしないと.cl-sublisとかあるから #Scheme よりは楽だけど. #LISP #CommonLisp #programming

うん,全て末尾再帰にしたら普通に動く.reverseがウザイが.よし,#PureLISP_sh では非末尾再帰を悪としよう(バグを仕様化する開発者).しかし,ここまでテストケース(仮)が揃えば,いつもならバグ箇所がすぐに見つかるのだが….

ytaki0801's tweet image. うん,全て末尾再帰にしたら普通に動く.reverseがウザイが.よし,#PureLISP_sh では非末尾再帰を悪としよう(バグを仕様化する開発者).しかし,ここまでテストケース(仮)が揃えば,いつもならバグ箇所がすぐに見つかるのだが….

てか,なんなんだこの変な現象….末尾再帰じゃないmap1が通常処理した後に何かやらかして,マクロ展開時だけオール大域変数の仕組みが悪さしてると思うのだけれども.見たまんまか.誰だ,こんな変なの作ったの!(鏡を見てみる)

ytaki0801's tweet image. てか,なんなんだこの変な現象….末尾再帰じゃないmap1が通常処理した後に何かやらかして,マクロ展開時だけオール大域変数の仕組みが悪さしてると思うのだけれども.見たまんまか.誰だ,こんな変なの作ったの!(鏡を見てみる)


先のlambdaの機能を応用した,let構文のマクロ定義例.ローカル名と値のセットのリストを最初に記述し,ローカル名を用いた本体記述を実行している. #PureLISP_sh #LISP #プログラミング

ytaki0801's tweet image. 先のlambdaの機能を応用した,let構文のマクロ定義例.ローカル名と値のセットのリストを最初に記述し,ローカル名を用いた本体記述を実行している.
#PureLISP_sh #LISP #プログラミング

lambdaは先の通り無名関数(ラムダ式)を定義するが,値にローカル名を付けて本体を実行するとみなすことができる(本来のラムダ計算).添付画像では,'aにx,'bにyという名前を付けてから(cons x (cons y nil))を実行しているとみなすことができる. #PureLISP_sh #LISP #プログラミング

ytaki0801's tweet image. lambdaは先の通り無名関数(ラムダ式)を定義するが,値にローカル名を付けて本体を実行するとみなすことができる(本来のラムダ計算).添付画像では,'aにx,'bにyという名前を付けてから(cons x (cons y nil))を実行しているとみなすことができる.
#PureLISP_sh #LISP #プログラミング


これまでの解説を踏まえた #LISP 系プログラミングの特徴.アルゴリズムとデータ構造の違い,言語仕様とユーザ定義の違いが表現上ほとんどない.新規概念の導入やメタプログラミングが容易である一方,可読性低下の可能性大.添付画像は,悪いマクロ定義の代表例. #PureLISP_sh #プログラミング

ytaki0801's tweet image. これまでの解説を踏まえた #LISP 系プログラミングの特徴.アルゴリズムとデータ構造の違い,言語仕様とユーザ定義の違いが表現上ほとんどない.新規概念の導入やメタプログラミングが容易である一方,可読性低下の可能性大.添付画像は,悪いマクロ定義の代表例. #PureLISP_sh #プログラミング

#PureLISP_sh のその他の組込関数その2:length.#PureLISP_sh には数値を用いた四則演算機能がない.どうしても四則演算したい場合は,リストの要素数などで代用する.その際,リストの要素数が数値表示できれば便利であるためlengthを用意している. #LISP #プログラミング

ytaki0801's tweet image. #PureLISP_sh のその他の組込関数その2:length.#PureLISP_sh には数値を用いた四則演算機能がない.どうしても四則演算したい場合は,リストの要素数などで代用する.その際,リストの要素数が数値表示できれば便利であるためlengthを用意している.
#LISP #プログラミング


lambdaのドット対引数定義を利用した,関数型プログラミングではおなじみのmap定義・使用例.引数リストがひとつの場合とふたつの場合で処理を変えていることに注意. #PureLISP_sh #LISP #プログラミング

ytaki0801's tweet image. lambdaのドット対引数定義を利用した,関数型プログラミングではおなじみのmap定義・使用例.引数リストがひとつの場合とふたつの場合で処理を変えていることに注意.
#PureLISP_sh #LISP #プログラミング

#PureLISP_sh のlambdaは(Schemeと同じく)引数定義に変数のみ(アトム)およびコンスセル表現(ドット対)が使用可能.これにより,任意の数の引数をとるラムダ式が定義できる. #LISP #プログラミング

ytaki0801's tweet image. #PureLISP_sh のlambdaは(Schemeと同じく)引数定義に変数のみ(アトム)およびコンスセル表現(ドット対)が使用可能.これにより,任意の数の引数をとるラムダ式が定義できる.
#LISP #プログラミング


ちなみに,PureLISP単体ならPOSIXどころかANSI仕様のCライブラリしか使ってないので,リポジトリにある"PureLISP.c"と"PureLISP.h"をWindowsにコピペしてきてtccでコンパイルしても普通に動く.終了はCtrl-c. #LISP #PureLISP_sh #programming #プログラミング

ytaki0801's tweet image. ちなみに,PureLISP単体ならPOSIXどころかANSI仕様のCライブラリしか使ってないので,リポジトリにある"PureLISP.c"と"PureLISP.h"をWindowsにコピペしてきてtccでコンパイルしても普通に動く.終了はCtrl-c. #LISP #PureLISP_sh #programming #プログラミング

ちなみに,#PureLISP_sh もGNU Emacs内で実行可能.ある意味当たり前だけど,rlwrapよりも補完機能や履歴編集が強力.もっとも,#PureLISP_sh があくまで #LISP 体験用と考えると,GNU EmacsがあるならIELMで #EmacsLisp 使えばいいじゃんという話が. #プログラミング

ytaki0801's tweet image. ちなみに,#PureLISP_sh もGNU Emacs内で実行可能.ある意味当たり前だけど,rlwrapよりも補完機能や履歴編集が強力.もっとも,#PureLISP_sh があくまで #LISP 体験用と考えると,GNU EmacsがあるならIELMで #EmacsLisp 使えばいいじゃんという話が.
#プログラミング
ytaki0801's tweet image. ちなみに,#PureLISP_sh もGNU Emacs内で実行可能.ある意味当たり前だけど,rlwrapよりも補完機能や履歴編集が強力.もっとも,#PureLISP_sh があくまで #LISP 体験用と考えると,GNU EmacsがあるならIELMで #EmacsLisp 使えばいいじゃんという話が.
#プログラミング

起動と終了.-nlは初期化ファイルを読み込まずプロンプトは表示する指定. #PureLISP_sh #LISP #プログラミング

ytaki0801's tweet image. 起動と終了.-nlは初期化ファイルを読み込まずプロンプトは表示する指定.
#PureLISP_sh #LISP #プログラミング


#PureLISP_sh のその他の組込関数その2:length.#PureLISP_sh には数値を用いた四則演算機能がない.どうしても四則演算したい場合は,リストの要素数などで代用する.その際,リストの要素数が数値表示できれば便利であるためlengthを用意している. #LISP #プログラミング

ytaki0801's tweet image. #PureLISP_sh のその他の組込関数その2:length.#PureLISP_sh には数値を用いた四則演算機能がない.どうしても四則演算したい場合は,リストの要素数などで代用する.その際,リストの要素数が数値表示できれば便利であるためlengthを用意している.
#LISP #プログラミング

#PureLISP_sh のその他の組込関数その1:atom.記号単体(アトム)の場合は真,コンスセルに基づくデータ構造の場合は偽を返す.リスト処理ではあまり使われないが,構文定義や #PureLISP_sh と等価の言語処理系(超循環評価器)の定義のためには必要. #LISP #プログラミング

ytaki0801's tweet image. #PureLISP_sh のその他の組込関数その1:atom.記号単体(アトム)の場合は真,コンスセルに基づくデータ構造の場合は偽を返す.リスト処理ではあまり使われないが,構文定義や #PureLISP_sh と等価の言語処理系(超循環評価器)の定義のためには必要. #LISP #プログラミング


#PureLISP_sh のその他の組込関数その1:atom.記号単体(アトム)の場合は真,コンスセルに基づくデータ構造の場合は偽を返す.リスト処理ではあまり使われないが,構文定義や #PureLISP_sh と等価の言語処理系(超循環評価器)の定義のためには必要. #LISP #プログラミング

ytaki0801's tweet image. #PureLISP_sh のその他の組込関数その1:atom.記号単体(アトム)の場合は真,コンスセルに基づくデータ構造の場合は偽を返す.リスト処理ではあまり使われないが,構文定義や #PureLISP_sh と等価の言語処理系(超循環評価器)の定義のためには必要. #LISP #プログラミング

先のlambdaの機能を応用した,let構文のマクロ定義例.ローカル名と値のセットのリストを最初に記述し,ローカル名を用いた本体記述を実行している. #PureLISP_sh #LISP #プログラミング

ytaki0801's tweet image. 先のlambdaの機能を応用した,let構文のマクロ定義例.ローカル名と値のセットのリストを最初に記述し,ローカル名を用いた本体記述を実行している.
#PureLISP_sh #LISP #プログラミング


一方,むしろ可読性を高める記述も可能.添付画像は, #LISP 系言語のSchemeで採用されている『define』構文を #PureLISP_sh のdefでマクロ定義したもの.値束縛の時にはdefと同じだが,関数定義の時には関数呼び出しのスタイルで定義できるようにしている. #プログラミング

ytaki0801's tweet image. 一方,むしろ可読性を高める記述も可能.添付画像は, #LISP 系言語のSchemeで採用されている『define』構文を #PureLISP_sh のdefでマクロ定義したもの.値束縛の時にはdefと同じだが,関数定義の時には関数呼び出しのスタイルで定義できるようにしている. #プログラミング

これまでの解説を踏まえた #LISP 系プログラミングの特徴.アルゴリズムとデータ構造の違い,言語仕様とユーザ定義の違いが表現上ほとんどない.新規概念の導入やメタプログラミングが容易である一方,可読性低下の可能性大.添付画像は,悪いマクロ定義の代表例. #PureLISP_sh #プログラミング

ytaki0801's tweet image. これまでの解説を踏まえた #LISP 系プログラミングの特徴.アルゴリズムとデータ構造の違い,言語仕様とユーザ定義の違いが表現上ほとんどない.新規概念の導入やメタプログラミングが容易である一方,可読性低下の可能性大.添付画像は,悪いマクロ定義の代表例. #PureLISP_sh #プログラミング


たとえば,condよりも記述がシンプルな『if』をlambdaとdefで関数定義しようとすると,条件が成り立つ/成り立たないに関わらず,真の時と偽の時の処理の両方が実行(評価)されてしまう.これは,再帰呼び出しの関数定義で用いる場合は特に問題となる. #PureLISP_sh #LISP #プログラミング

ytaki0801's tweet image. たとえば,condよりも記述がシンプルな『if』をlambdaとdefで関数定義しようとすると,条件が成り立つ/成り立たないに関わらず,真の時と偽の時の処理の両方が実行(評価)されてしまう.これは,再帰呼び出しの関数定義で用いる場合は特に問題となる.
#PureLISP_sh #LISP #プログラミング

関数と構文の違い.cons,car,cdr,eqは関数名,quote,cond,lambda,defは構文名.いずれもS式連結リストの第一要素として記述するが,関数は第ニ要素以降をそれぞれ実行(評価)した結果を用いて関数適用するのに対し,構文は固有の記述処理を行う. #PureLISP_sh #LISP #プログラミング

ytaki0801's tweet image. 関数と構文の違い.cons,car,cdr,eqは関数名,quote,cond,lambda,defは構文名.いずれもS式連結リストの第一要素として記述するが,関数は第ニ要素以降をそれぞれ実行(評価)した結果を用いて関数適用するのに対し,構文は固有の記述処理を行う.
#PureLISP_sh #LISP #プログラミング


うむ,駅前カフェでは不動点コンビネータのコーディングがよく似合う(勘違い).しかし,C言語でネイティブバイナリにするとやっぱり速いな.末尾再帰最適化すらないので(fibonacci 23)相当でセグフォ吐くけど. #PureLISP_sh #LISP #programming

ytaki0801's tweet image. うむ,駅前カフェでは不動点コンビネータのコーディングがよく似合う(勘違い).しかし,C言語でネイティブバイナリにするとやっぱり速いな.末尾再帰最適化すらないので(fibonacci 23)相当でセグフォ吐くけど. #PureLISP_sh #LISP #programming

関数と構文の違い.cons,car,cdr,eqは関数名,quote,cond,lambda,defは構文名.いずれもS式連結リストの第一要素として記述するが,関数は第ニ要素以降をそれぞれ実行(評価)した結果を用いて関数適用するのに対し,構文は固有の記述処理を行う. #PureLISP_sh #LISP #プログラミング

ytaki0801's tweet image. 関数と構文の違い.cons,car,cdr,eqは関数名,quote,cond,lambda,defは構文名.いずれもS式連結リストの第一要素として記述するが,関数は第ニ要素以降をそれぞれ実行(評価)した結果を用いて関数適用するのに対し,構文は固有の記述処理を行う.
#PureLISP_sh #LISP #プログラミング

lambdaのドット対引数定義を利用した,関数型プログラミングではおなじみのmap定義・使用例.引数リストがひとつの場合とふたつの場合で処理を変えていることに注意. #PureLISP_sh #LISP #プログラミング

ytaki0801's tweet image. lambdaのドット対引数定義を利用した,関数型プログラミングではおなじみのmap定義・使用例.引数リストがひとつの場合とふたつの場合で処理を変えていることに注意.
#PureLISP_sh #LISP #プログラミング


#LISP 系言語処理系のほとんどにはマクロ機能があり,#PureLISP_sh の場合はmacroがある.lambdaに似ているが,本体を二度評価することで,S式を生成してから実際の処理を行う.これにより,構文を定義することができる.添付画像の例では,S式生成のためにlistを定義・利用している. #プログラミング

ytaki0801's tweet image. #LISP 系言語処理系のほとんどにはマクロ機能があり,#PureLISP_sh の場合はmacroがある.lambdaに似ているが,本体を二度評価することで,S式を生成してから実際の処理を行う.これにより,構文を定義することができる.添付画像の例では,S式生成のためにlistを定義・利用している. #プログラミング

たとえば,condよりも記述がシンプルな『if』をlambdaとdefで関数定義しようとすると,条件が成り立つ/成り立たないに関わらず,真の時と偽の時の処理の両方が実行(評価)されてしまう.これは,再帰呼び出しの関数定義で用いる場合は特に問題となる. #PureLISP_sh #LISP #プログラミング

ytaki0801's tweet image. たとえば,condよりも記述がシンプルな『if』をlambdaとdefで関数定義しようとすると,条件が成り立つ/成り立たないに関わらず,真の時と偽の時の処理の両方が実行(評価)されてしまう.これは,再帰呼び出しの関数定義で用いる場合は特に問題となる.
#PureLISP_sh #LISP #プログラミング


lambdaは先の通り無名関数(ラムダ式)を定義するが,値にローカル名を付けて本体を実行するとみなすことができる(本来のラムダ計算).添付画像では,'aにx,'bにyという名前を付けてから(cons x (cons y nil))を実行しているとみなすことができる. #PureLISP_sh #LISP #プログラミング

ytaki0801's tweet image. lambdaは先の通り無名関数(ラムダ式)を定義するが,値にローカル名を付けて本体を実行するとみなすことができる(本来のラムダ計算).添付画像では,'aにx,'bにyという名前を付けてから(cons x (cons y nil))を実行しているとみなすことができる.
#PureLISP_sh #LISP #プログラミング

#LISP 系言語処理系のほとんどにはマクロ機能があり,#PureLISP_sh の場合はmacroがある.lambdaに似ているが,本体を二度評価することで,S式を生成してから実際の処理を行う.これにより,構文を定義することができる.添付画像の例では,S式生成のためにlistを定義・利用している. #プログラミング

ytaki0801's tweet image. #LISP 系言語処理系のほとんどにはマクロ機能があり,#PureLISP_sh の場合はmacroがある.lambdaに似ているが,本体を二度評価することで,S式を生成してから実際の処理を行う.これにより,構文を定義することができる.添付画像の例では,S式生成のためにlistを定義・利用している. #プログラミング


ところで,タグシステムは我らが #PureLISP_sh というか純LISP仕様でももちろん定義・実行可能なんだけど,あんまり面白くないんだよなー.できてあたりまえといいますか.とはいえ,単独でチューリング完全のラムダ式のみで定義するのは骨が折れそう.チャーチ数から始めないとなんだよなあ.

ytaki0801's tweet image. ところで,タグシステムは我らが #PureLISP_sh というか純LISP仕様でももちろん定義・実行可能なんだけど,あんまり面白くないんだよなー.できてあたりまえといいますか.とはいえ,単独でチューリング完全のラムダ式のみで定義するのは骨が折れそう.チャーチ数から始めないとなんだよなあ.

少し話を戻して,2-タグシステム+コラッツ関数のお手軽実装まとめ.Julia言語の要global指定に引っかかってしまった….そしてしれっとC++版が混ざる.文字列操作やマップが標準装備で(C言語よりもはるかに)簡単なんだもん.次はJavaかGo言語かなあ.というか,超久しぶりにQiita企画で募る?

ytaki0801's tweet image. 少し話を戻して,2-タグシステム+コラッツ関数のお手軽実装まとめ.Julia言語の要global指定に引っかかってしまった….そしてしれっとC++版が混ざる.文字列操作やマップが標準装備で(C言語よりもはるかに)簡単なんだもん.次はJavaかGo言語かなあ.というか,超久しぶりにQiita企画で募る?
ytaki0801's tweet image. 少し話を戻して,2-タグシステム+コラッツ関数のお手軽実装まとめ.Julia言語の要global指定に引っかかってしまった….そしてしれっとC++版が混ざる.文字列操作やマップが標準装備で(C言語よりもはるかに)簡単なんだもん.次はJavaかGo言語かなあ.というか,超久しぶりにQiita企画で募る?


Loading...

Something went wrong.


Something went wrong.


United States Trends