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
sre_introduction.pdf
Search
Niyarin
July 06, 2019
Programming
0
540
sre_introduction.pdf
Niyarin
July 06, 2019
Tweet
Share
More Decks by Niyarin
See All by Niyarin
Scheme用nREPLの開発(エラー出力の改善)
niyarin
0
160
bel lispの紹介
niyarin
0
750
nanopass-compiler-frameworkを使ってみました
niyarin
0
440
Gorgos-parser-combinator-written-in-scheme
niyarin
0
390
outputting-beautiful-s-expression
niyarin
0
390
Serialisp
niyarin
1
680
Mongo DBとS式検索
niyarin
0
330
goodbye-python-repl
niyarin
0
370
SchemeのEphemeronとWeak Pairの説明
niyarin
0
1k
Other Decks in Programming
See All in Programming
ポスターセッション: 「まっすぐ行って、右!」って言ってラズパイカーを動かしたい 〜生成AI × Raspberry Pi Pico × Gradioの試作メモ〜
komofr
0
1.3k
Writing Better Go: Lessons from 10 Code Reviews
konradreiche
0
640
PHPに関数型の魂を宿す〜PHP 8.5 で実現する堅牢なコードとは〜 #phpcon_hiroshima / phpcon-hiroshima-2025
shogogg
1
140
ソフトウェア設計の実践的な考え方
masuda220
PRO
4
560
いま中途半端なSwift 6対応をするより、Default ActorやApproachable Concurrencyを有効にしてからでいいんじゃない?
yimajo
2
400
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
300
私達はmodernize packageに夢を見るか feat. go/analysis, go/ast / Go Conference 2025
kaorumuta
2
530
Things You Thought You Didn’t Need To Care About That Have a Big Impact On Your Job
hollycummins
0
220
Railsだからできる 例外業務に禍根を残さない 設定設計パターン
ei_ei_eiichi
0
460
デミカツ切り抜きで面倒くさいことはPythonにやらせよう
aokswork3
0
230
組込みだけじゃない!TinyGo で始める無料クラウド開発入門
otakakot
0
230
技術的負債の正体を知って向き合う / Facing Technical Debt
irof
0
160
Featured
See All Featured
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Imperfection Machines: The Place of Print at Facebook
scottboms
269
13k
Optimizing for Happiness
mojombo
379
70k
Raft: Consensus for Rubyists
vanstee
139
7.1k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.7k
Side Projects
sachag
455
43k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
6.1k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
9
590
Faster Mobile Websites
deanohume
310
31k
Designing for Performance
lara
610
69k
Agile that works and the tools we love
rasmusluckow
331
21k
Transcript
SchemeのS式正規表現は良いぞ (本当はClojureに移植した話をするつもりだった) Niyarin
SREとは ・正規表現をS式で表現したもの [ABC]+[0-9]{0,3}.? `(: (+ ,char-set:ABC) (repeated 0 3 num)
(? any)) 1
・SRFI115 あるいは R7RS large (scheme regex) Sagittarius Scheme、Chibi Schemeとか ・Guileのirregex
文法はSREとだいたい同じ SREの仕様 2
・たとえば、1文字以上の繰り返しは、+だけでなく、 one-or-moreという表現ができる --> 不慣れでも読みやすい正規表現が書ける SREの紹介(1)シンボルが使えるメリット1 (+ “abc”) (one-or-more “abc”) 3
・文字列とシンボルの2つあるのはいいことだ ・無制限に名前付けができる SREの紹介(2)シンボルが使えるメリット2 任意の一文字: any アルファベット:alphabetic 16進数文字:hex-digit 単語:word 4
・部分的にSchemeコードを挿入して評価で展開できる SREの紹介(3)quasi-quote `(one-or-more “abc” ,something “def”) 5
・SRFI44(scheme set char) 文字の集合データ構造 ・[ ] ⇐よりも自由に文字の集合を使える SREの紹介(4)データ構造の挿入ができる (char-set #\a
#\b #\c) ;a,b,cの文字の集合 (char-set-filter (lambda (c ) (not (char=? c #\z))) char-set:letter) ;z以外のレターの集合 6
・のんびりしていたから ・当初SRE->Clojure(Java)正規表現をやるつもりだった マッチングは実装しなくてよいしすぐ終わると思っていた.. X SREの表現力の幅のほうが大きかった Clojureへの移植が遅れた言い訳 無理ではないけど、表現を落とす実装コストがかかる 7
・S式なのでパーサ実装コストは省ける ・マッチングはNFA/DFA、VM 、微分型とかで実装できる “正規表現技術入門 ――最新エンジン実装と理論的背景” という本が良い → CLに移植しませんか? それでも実装は楽 8
・S式で表現するとのはよいこと ・実装遅れたのはSREが良すぎたせい ・暇な人は実装しよう まとめ
・S式にするとよいものは他になにがあるのか? SXML(S式XML文法) おわり (tag (@ (attr1 "value1") (attr2 "value2")) (nested
"Text node") (empty)) DBクエリとか? SXQL