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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
t-sin
July 28, 2022
Programming
0
1.3k
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
760
Common Lisp製のゲームエンジンTrialについてすこし
tsin45
0
1.3k
Common Lispでのゲームボーイエミュレータ実装進捗報告 vol.1
tsin45
0
880
Other Decks in Programming
See All in Programming
Goの型安全性で実現する複数プロダクトの権限管理
ishikawa_pro
2
1.4k
ロボットのための工場に灯りは要らない
watany
12
3.2k
Nostalgia Meets Technology: Super Mario with TypeScript
manfredsteyer
PRO
0
110
へんな働き方
yusukebe
6
2.8k
How to stabilize UI tests using XCTest
akkeylab
0
140
見せてもらおうか、 OpenSearchの性能とやらを!
shunta27
1
140
[PHPerKaigi 2026]PHPerKaigi2025の企画CodeGolfが最高すぎて社内で内製して半年運営して得た内製と運営の知見
ikezoemakoto
0
290
Codex の「自走力」を高める
yorifuji
0
1.3k
KagglerがMixSeekを触ってみた
morim
0
320
Mastering Event Sourcing: Your Parents Holidayed in Yugoslavia
super_marek
0
110
それはエンジニアリングの糧である:AI開発のためにAIのOSSを開発する現場より / It serves as fuel for engineering: insights from the field of developing open-source AI for AI development.
nrslib
1
580
仕様漏れ実装漏れをなくすトレーサビリティAI基盤のご紹介
orgachem
PRO
7
3.1k
Featured
See All Featured
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
340
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
1.9k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
Everyday Curiosity
cassininazir
0
180
Balancing Empowerment & Direction
lara
5
990
Six Lessons from altMBA
skipperchong
29
4.2k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
220
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
140
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
1
490
AI: The stuff that nobody shows you
jnunemaker
PRO
3
480
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
280
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
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を紹介します – シンセ的なものをつくってみたりする予定