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.2k
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
660
Common Lisp製のゲームエンジンTrialについてすこし
tsin45
0
1.2k
Common Lispでのゲームボーイエミュレータ実装進捗報告 vol.1
tsin45
0
840
Other Decks in Programming
See All in Programming
contribution to astral-sh/uv
shunsock
0
540
AI駆動で0→1をやって見えた光と伸びしろ
passion0102
1
850
What's new in Spring Modulith?
olivergierke
1
170
Range on Rails ―「多重範囲型」という新たな選択肢が、複雑ロジックを劇的にシンプルにしたワケ
rizap_tech
0
7.7k
Towards Transactional Buffering of CDC Events @ Flink Forward 2025 Barcelona Spain
hpgrahsl
0
120
Leading Effective Engineering Teams in the AI Era
addyosmani
7
640
コード生成なしでモック処理を実現!ovechkin-dm/mockioで学ぶメタプログラミング
qualiarts
0
270
Server Side Kotlin Meetup vol.16: 内部動作を理解して ハイパフォーマンスなサーバサイド Kotlin アプリケーションを書こう
ternbusty
3
250
なんでRustの環境構築してないのにRust製のツールが動くの? / Why Do Rust-Based Tools Run Without a Rust Environment?
ssssota
14
46k
はじめてのDSPy - 言語モデルを『プロンプト』ではなく『プログラミング』するための仕組み
masahiro_nishimi
4
16k
NIKKEI Tech Talk#38
cipepser
0
250
AI 駆動開発におけるコミュニティと AWS CDK の価値
konokenj
5
260
Featured
See All Featured
Rails Girls Zürich Keynote
gr2m
95
14k
It's Worth the Effort
3n
187
28k
Imperfection Machines: The Place of Print at Facebook
scottboms
269
13k
jQuery: Nuts, Bolts and Bling
dougneiner
65
7.9k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.5k
The Straight Up "How To Draw Better" Workshop
denniskardys
238
140k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
For a Future-Friendly Web
brad_frost
180
10k
Documentation Writing (for coders)
carmenintech
75
5.1k
Making the Leap to Tech Lead
cromwellryan
135
9.6k
A better future with KSS
kneath
239
18k
Six Lessons from altMBA
skipperchong
29
4k
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を紹介します – シンセ的なものをつくってみたりする予定