Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Carp言語さわってみた 〜鯉を取り戻せ編〜
Search
t-sin
July 28, 2022
Programming
0
1.1k
Carp言語さわってみた 〜鯉を取り戻せ編〜
Shibuya.lisp lispmeetup #104
で発表したときの資料です。
t-sin
July 28, 2022
Tweet
Share
More Decks by t-sin
See All by t-sin
Lispの紹介 〜 令和最新版
tsin45
0
640
Common Lisp製のゲームエンジンTrialについてすこし
tsin45
0
1.1k
Common Lispでのゲームボーイエミュレータ実装進捗報告 vol.1
tsin45
0
830
Other Decks in Programming
See All in Programming
AI時代のドメイン駆動設計-DDD実践におけるAI活用のあり方 / ddd-in-ai-era
minodriven
23
9k
Jakarta EE Core Profile and Helidon - Speed, Simplicity, and AI Integration
ivargrimstad
0
200
フロントエンドのmonorepo化と責務分離のリアーキテクト
kajitack
2
140
tool ディレクティブを導入してみた感想
sgash708
1
150
Rancher と Terraform
fufuhu
0
110
Claude Codeで実装以外の開発フロー、どこまで自動化できるか?失敗と成功
ndadayo
2
1.5k
Scale out your Claude Code ~自社専用Agentで10xする開発プロセス~
yukukotani
9
2.6k
The state patternの実践 個人開発で培ったpractice集
miyanokomiya
0
150
A Gopher's Guide to Vibe Coding
danicat
0
170
Oracle Database Technology Night 92 Database Connection control FAN-AC
oracle4engineer
PRO
1
220
【第4回】関東Kaggler会「Kaggleは執筆に役立つ」
mipypf
0
850
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
180
Featured
See All Featured
Java REST API Framework Comparison - PWX 2021
mraible
33
8.8k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
184
54k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
61k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
8
480
Visualization
eitanlees
147
16k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Practical Orchestrator
shlominoach
190
11k
The Language of Interfaces
destraynor
160
25k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Statistics for Hackers
jakevdp
799
220k
Transcript
Carp言語さわってみた 〜鯉を取り戻せ編〜 @t-sin 2022-07-28 lispmeetup #104
Carp言語とは • Clojureふうの構文をもつLisp系言語 • GCレス、VMレス • 静的型付き言語 • 所有権追跡 •
簡単にCコードと統合できる • Lispのマクロ • REPL
Carpに興味を持った理由 • GC/VMがないLispである点 • 静的型システムおよび所有権追跡がある点 – 近ごろRustをさわってたので気になってた – Rust的な安全性がある? •
performance sensitiveなユースケースを想定してる点 – t-sinの興味: 音声信号処理、ゲーム • 重要: ドキュメントにあるREPLのプロンプトが「鯉」である点 – ”The 鲤 character on the last line is the REPL prompt”って書いてある – 以前「 」だったらしく「それ鯉 鲮 (carp) じゃないよ」ってissueが立ってた https://github.com/carp-lang/Carp/issues/578
Hello Carp! $ ./bin/carp Welcome to Carp 0.5.5 This is
free software with ABSOLUTELY NO WARRANTY. Evaluate (help) for more information. > (IO.println "Hello Carp!") Hello Carp!
鯉じゃない!!! $ ./bin/carp Welcome to Carp 0.5.5 This is free
software with ABSOLUTELY NO WARRANTY. Evaluate (help) for more information. > (IO.println "Hello Carp!") Hello Carp!
鯉の条件 • どうして鯉にならないのか • プロンプト文字列はProject.config内の値が使われる – マニュアル: https://github.com/carp-lang/Carp/blob/35465b9ffa8ce59a83af54a0637f8e93e49 59dc4/docs/Manual.md#configuring-a-project –
(Project.config "prompt" "鯉")とすると変えられるっぽい > (Project.config "prompt" "鯉") 鯉 (IO.println "鯉") 鯉
顧客が求めている鯉 • 「設定変えれば鯉にできる」 – →そうではない • なにもしなくても鯉になる条件を知りたい – REPLで鯉したい
鯉を取り戻せ • まず鯉プロンプトについて変更があったか調べる • もしかしたらなくなってるかも😭 – issue: なし – PR:
なし • つまり鯉REPLは消されていない
鯉を取り戻せ • 豆知識: CarpはHaskellで実装されている • あの>なる謎のプロンプトはどこから? – とりあえずsrc/ディレクトリを見てみる – Carpリポジトリのディレクトリ構造
→→ • Project.configの定義ここ https://github.com/carp-lang/Carp/blob/35465b9ffa8ce59a83af54a0637f8e93e4959dc 4/src/Project.hs – ただし値は入ってない ~/tmp/carp-lang/Carp$ tree -d -L 1 . ├── app ├── bench ├── core ├── docs ├── docs-html ├── examples ├── headerparse ├── resources ├── scripts ├── src └── test
ほんとうの鯉の条件 • Project.configの初期化はどこでやっているのか – src/には実行ファイルcarpのエントリポントない • app/Main.hs !! https://github.com/carp-lang/Carp/blob/35465b9ffa8ce59a83af54a0637f8e93e4959dc 4/app/Main.hs#L57
• macでのみプロンプトが鯉になる – 当環境はUbuntu – すべてが鯉にならない
鯉するCarp環境 • 起動したら自動で鯉にするには? • 設定ファイルを書きましょう – ~/.config/carp/profile.carp $ cat ~/.config/carp/profile.carp
(Project.config "prompt" "鯉")
鯉についての一考察 • macのみ鯉になるのはなぜか – Windowsは、コマンドプロンプトでUnicodeの文字「鯉」を 表示すると壊れそう – GNU/Linuxは、Unicodeのambiguous widthへの配慮? もしかしたらロケールがxx_YY.UTF-8じゃないケースへの配慮かも
• GNU/Linuxでも「鯉」にしようぜと言いたい… – issueを立てて訊いてみた https://github.com/carp-lang/Carp/issues/1423 – 「Unicodeをサポートしてない端末エミュレータもあるから」とのこと
きょうのまとめ • Carp言語の特徴を紹介した – REPLが鯉の言語です • GNU/LinuxでREPLが鯉にならない理由を調査した • 鯉ってサイコー!
きょうのまとめ • Carp言語の特徴を紹介した – REPLが鯉の言語です • GNU/LinuxでREPLが鯉にならない理由を調査した • 鯉ってサイコー! •
REPLに鯉がいないのが気になりすぎて大脱線しました • 次回はちゃんとCarpを紹介します – シンセ的なものをつくってみたりする予定