Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Scheme_syntax_sugars.pdf
Search
Niyarin
June 28, 2019
240
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Scheme_syntax_sugars.pdf
Niyarin
June 28, 2019
More Decks by Niyarin
See All by Niyarin
Scheme用nREPLの開発(エラー出力の改善)
niyarin
0
190
bel lispの紹介
niyarin
0
800
nanopass-compiler-frameworkを使ってみました
niyarin
0
510
Gorgos-parser-combinator-written-in-scheme
niyarin
0
430
outputting-beautiful-s-expression
niyarin
0
430
Serialisp
niyarin
1
740
Mongo DBとS式検索
niyarin
0
360
goodbye-python-repl
niyarin
0
410
SchemeのEphemeronとWeak Pairの説明
niyarin
0
1.1k
Featured
See All Featured
Chasing Engaging Ingredients in Design
codingconduct
0
360
Tell your own story through comics
letsgokoyo
1
1.1k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.9k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.6k
Raft: Consensus for Rubyists
vanstee
142
7.8k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
280
Writing Fast Ruby
sferik
630
63k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.8k
Claude Code のすすめ
schroneko
67
230k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
620
Site-Speed That Sticks
csswizardry
13
1.6k
Transcript
Scheme/SRFIの syntax sugarの紹介 Niyarin
内容 ・SRFIとは ・Scheme のsyntax sugarの紹介 1
SRFI ・Scheme の拡張の仕様 ・RNRS(Schemeの標準仕様)にたまにマージされる ・内容はいろいろある ・データ構造 SRFI 69 (hash) SRFI113
(set) ・組み込みデータ構造の処理 SRFI 1 (reduce とか) SRFI 132 (sortとか) ・実用的なやつ SRFI64 (test suite) SRFI 106 (Socket) 2
Syntax Sugar ・S式やめる ・可読性があがる? ・初心者にはフレンドリー? ・”Being Popular” では ”I still
don't find prefix math expressions natural.” Paul Graham (前置記法による数式が自然であるとは思えない) 3
Curly-infix-expressions (SRFI 105) ・{}は拡張のために予約されている → {}を中間表現に使う ・あまりサポートする処理系は少ない Guile {n >
5} ;(> n 5) {a + b + c} ;(+ a b c) (read-enable 'curly-infix) 4
Curly-infix-expressions (SRFI 105) ・f(x)形式も使える ・演算子と手続きの区別はない {‘a cons ‘b} ;(cons ‘a
‘b) {+(1 2)};(+ 1 2) {cons (‘a ‘b)} ;(cons ‘a ‘b) 5
Curly-infix-expressions (SRFI 105) ・演算子の優先順位はない ・複数の演算子を混ぜたり、{}内が偶数個の場合 → 自分で$nfx$を定義してどうにかしてってことらしい {1 + {2 *
3}} ;(+ 1 (* 2 3)) (1 + 2 * 3);($nfx$ 1 + 2 * 3) 6
どちらが良いか? { f{n - 1}(x) } ((f (- n 1))
x) ・C式 ・S式 7
Indentation-sensitive syntax (SRFI 49) ・インデントで構造化する構文(I式) ・標準でサポートしている処理系はSagittariusくらい define fac x if
= x 0 1 * x fac - x 1 #!reader=srfi/:49 (import (srfi :49)) 8
Indentation-sensitive syntax (SRFI 49) ・S式との共存もできる ・括弧で囲うにはgroupを使う define (fac x) if
(= x 0) 1 * x fac (- x 1) quote group a b ;(quote ((a b))) 9
Wisp (SRFI 119) ・なんだこれ ・標準で使える処理系はない →WispのサイトにGuile用のコードがあるのでインストールする define : factorial n
__ if : zero? n ____ . 1 ____ * n : factorial (- n 1) display : factorial 5 newline 10
Wisp (SRFI 119) ルール let ;(let ((x 1) : x 1
; (y 2) y 2 ; (y 3)) body ; body) ・Colon”:” 行頭にある ▶ 下のインデントが閉じるまで、 それ以外 ▶ 行末まで define : f a ;(define (f a) + ; + a 1) a 1 ・ Dot “.” 引数(atom)を並べる list . 1 2 . 3 . 4 ;(list 1 2 3 4) list 1 2 3 ;エラー 4 ;(list (1 2) (3) (4)) 11
・Under score ”_” 空白と同じ HTML上の空白の扱いにより、インデントが消えたりすることへの対処 Wisp (SRFI 119) ルール +
1 2 ___ + 3 4 ____ + 5 6 12
t-expressions SRFI 110 その他(紹介だけ) let <* x $
cos $ f c *> ! dostuff x 13
括弧 ( ) を減らすと別の記号が増えます。 初心者向きかは微妙。 おしまい 14