Emacs ML let start ::= exp (1) exp ::= (2) fn id exp (3) ::= (4) (5) ::= id (6) const (7) (exp) (8) let val id = exp in

Similar documents
Int Int 29 print Int fmt tostring 2 2 [19] ML ML [19] ML Emacs Standard ML M M ::= x c λx.m M M let x = M in M end (M) x c λx.


日本内科学会雑誌第98巻第4号

日本内科学会雑誌第97巻第7号

Jacques Garrigue

koba/class/soft-kiso/ 1 λ if λx.λy.y false 0 λ typed λ-calculus λ λ 1.1 λ λ, syntax τ (types) ::= b τ 1 τ 2 τ 1

Ł\”ƒ-2005

第90回日本感染症学会学術講演会抄録(I)

日本内科学会雑誌第102巻第4号

O1-1 O1-2 O1-3 O1-4 O1-5 O1-6

放射線専門医認定試験(2009・20回)/HOHS‐05(基礎二次)

プログラム


ViewSonic Corporation, Macintosh Power Macintosh Microsoft Windows Windows ViewSonic 3 OnView ViewMatch ViewMeter ViewSonic ViewSonic, ViewSonic

プログラム

1. 1 A : l l : (1) l m (m 3) (2) m (3) n (n 3) (4) A α, β γ α β + γ = 2 m l lm n nα nα = lm. α = lm n. m lm 2β 2β = lm β = lm 2. γ l 2. 3

平成 19 年度 ( 第 29 回 ) 数学入門公開講座テキスト ( 京都大学数理解析研究所, 平成 19 ~8 年月 72 月日開催 30 日 ) 1 PCF (Programming language for Computable Functions) PCF adequacy adequacy

ML λ λ 1 λ 1.1 λ λ λ e (λ ) ::= x ( ) λx.e (λ ) e 1 e 2 ( ) ML λx.e Objective Caml fun x -> e x e let 1


untitled

FileMaker Server Getting Started Guide


抄録/抄録1    (1)V

2 2.1 NPCMJ ( (Santorini, 2010) (NPCMJ, 2016) (1) (, 2016) (1) (2) (1) ( (IP-MAT (CONJ ) (PP (NP (D ) (N )) (P )) (NP-SBJ *

30

Parametric Polymorphism

研修コーナー

tnbp59-21_Web:P2/ky132379509610002944

SmartLMSユーザーズガイド<講師編>

IPSJ SIG Technical Report Vol.2013-CE-119 No /3/15 enpoly enpoly enpoly 1) 2) 2 C Java Bertrand Meyer [1] 1 1 if person greeting()

パーキンソン病治療ガイドライン2002


LLG-R8.Nisus.pdf

shift/reset [13] 2 shift / reset shift reset k call/cc reset shift k shift (...) k 1 + shift(fun k -> 2 * (k 3)) k 2 * (1 + 3) 8 reset shift reset (..

導入基礎演習.ppt


untitled

_0212_68<5A66><4EBA><79D1>_<6821><4E86><FF08><30C8><30F3><30DC><306A><3057><FF09>.pdf

FileMaker Server 9 Getting Started Guide

., White-Box, White-Box. White-Box.,, White-Box., Maple [11], 2. 1, QE, QE, 1 Redlog [7], QEPCAD [9], SyNRAC [8] 3 QE., 2 Brown White-Box. 3 White-Box

u Θ u u u ( λ + ) v Θ v v v ( λ + ) (.) Θ ( λ + ) (.) u + + v (.),, S ( λ + ) uv,, S uv, SH (.8) (.8) S S (.9),

PC Development of Distributed PC Grid System,,,, Junji Umemoto, Hiroyuki Ebara, Katsumi Onishi, Hiroaki Morikawa, and Bunryu U PC WAN PC PC WAN PC 1 P

InterSafe Personal_v2.3 ユーザーズガイド_初版

FileMaker Server 9 Getting Started Guide

y = x x R = 0. 9, R = σ $ = y x w = x y x x w = x y α ε = + β + x x x y α ε = + β + γ x + x x x x' = / x y' = y/ x y' =

03実習2・松井.pptx

. IDE JIVE[1][] Eclipse Java ( 1) Java Platform Debugger Architecture [5] 3. Eclipse GUI JIVE 3.1 Eclipse ( ) 1 JIVE Java [3] IDE c 016 Information Pr

第86回日本感染症学会総会学術集会後抄録(I)

日本内科学会雑誌第96巻第7号

2012 M

compact compact Hermann compact Hermite ( - ) Hermann Hermann ( ) compact Hermite Lagrange compact Hermite ( ) a, Σ a {0} a 3 1

5 IO Haskell return (>>=) Haskell Haskell Haskell 5.1 Util Util (Util: Tiny Imperative Language) 1 UtilErr, UtilST, UtilCont, Haskell C

…J…−†[†E…n…‘†[…hfi¯„^‚ΛžfiüŒå

untitled

プログラミングD - Java

3 3.1 algebraic datatype data k = 1 1,1... 1,n1 2 2,1... 2,n2... m m,1... m,nm 1 m m m,1,..., m,nm m 1, 2,..., k 1 data Foo x y = Alice x [y] B

snkp-14-2/ky347084220200019175

平成 28 年度 ( 第 38 回 ) 数学入門公開講座テキスト ( 京都大学数理解析研究所, 平成 ~8 28 月年 48 日開催月 1 日 semantics FB 1 x, y, z,... FB 1. FB (Boolean) Functional

min. z = 602.5x x 2 + 2

連載講座 : 高生産並列言語を使いこなす (4) ゲーム木探索の並列化 田浦健次朗 東京大学大学院情報理工学系研究科, 情報基盤センター 目次 1 準備 問題の定義 αβ 法 16 2 αβ 法の並列化 概要 Young Brothers Wa

( ) ( ) ( ) 2

July 28, H H 0 H int = H H 0 H int = H int (x)d 3 x Schrödinger Picture Ψ(t) S =e iht Ψ H O S Heisenberg Picture Ψ H O H (t) =e iht O S e i

振動工学に基礎


P1〜14/稲 〃

0 1 q

zsj2017 (Toyama) program.pdf


_170825_<52D5><7269><5B66><4F1A>_<6821><4E86><5F8C><4FEE><6B63>_<518A><5B50><4F53><FF08><5168><9801><FF09>.pdf

untitled

hotspot の特定と最適化

r3.dvi

( ) ( ) lex LL(1) LL(1)

TaskPit TaskPit TaskPit TaskPit 3 TaskPit Windows OS PC CPU 2 TaskPit TaskPit Windows OS CPU 1 10 TaskPit

# let rec sigma (f, n) = # if n = 0 then 0 else f n + sigma (f, n-1);; val sigma : (int -> int) * int -> int = <fun> sigma f n ( : * -> * ) sqsum cbsu

MSAC-EX1

SO(2)


JSP58-program



untitled

STARTプログラム.indd


10st_jp_p43_44.indd


(Compton Scattering) Beaming 1 exp [i (k x ωt)] k λ k = 2π/λ ω = 2πν k = ω/c k x ωt ( ω ) k α c, k k x ωt η αβ k α x β diag( + ++) x β = (ct, x) O O x

Formation process of regular satellites on the circumplanetary disk Hidetaka Okada Department of Earth Sciences, Undergraduate school of Scie

付加情報をもったファイル共有システム

製品価格 ( 新規購入 ) INT6531 インテル VTune Amplifier XE 2017 for Windows Floating 1-275, ,000 INT6532 インテル VTune Amplifier XE 2017 for Linux Floating 1-27


本文/扉1

プログラム


平成20年5月 協会創立50年の歩み 海の安全と環境保全を目指して 友國八郎 海上保安庁 長官 岩崎貞二 日本船主協会 会長 前川弘幸 JF全国漁業協同組合連合会 代表理事会長 服部郁弘 日本船長協会 会長 森本靖之 日本船舶機関士協会 会長 大内博文 航海訓練所 練習船船長 竹本孝弘 第二管区海上保安本部長 梅田宜弘

Program

aphp37-11_プロ1/ky869543540410005590


Œ{Ł¶/1ŒÊ −ªfiª„¾ [ 1…y†[…W ]

日本内科学会雑誌第96巻第11号

Transcription:

Emacs, {l06050,sasano}@sic.shibaura-it.ac.jp Eclipse Visual Studio Standard ML Haskell Emacs 1 Eclipse Visual Studio variable not found LR(1) let Emacs Emacs Emacs Java Emacs JDEE [3] JDEE Emacs Java

2 3 4 5 6 7 Emacs 8 2 1. 2. 3. 4. 5. ML let start ::= exp (1) exp ::= (2) fn id exp (3) ::= (4) (5) ::= id (6) const (7) (exp) (8) let val id = exp in exp end (9) 2 r6, r7 (1) (3) (5) (6) (7) (8) (9) (2) (4) let val x = 1 in let val y = fn x => fn y => x y in let val z = fn x => x in y x y y ( end let x, y, z x : int y : α, β. (α β) α β z : α. α α

y y z 2 x y z 2 3 EOF let, id, val, in, end, =,, fn, (, ), const, EOF id const id x const 2 EOF id id EOF id cursor 1 let id id EOF EOF id 1 let val x = 2 in x let, val, id x, =, exp, in, 1 1 cursor id cursor

id const fn ( ) let val = in end EOF 0 s15 r6 s16 r7 s6 s1 s7 1 s15 r6 s16 r7 s6 s1 s7 2 s15 r6 s16 r7 s6 s1 s7 3 s15 r6 s16 r7 s6 s1 s7 4 s15 r6 s16 r7 s6 s1 s7 5 s15 r6 s16 r7 r2 r2 s1 r2 s7 r2 r2 r2 r2 r2 6 s9 7 s11 8 acc 9 s2 10 s20 r8 11 s12 12 s3 13 s4 14 s22 r9 15 r6 r6 r6 r6 r6 r6 r6 r6 r6 r6 r6 r6 16 r7 r7 r7 r7 r7 r7 r7 r7 r7 r7 r7 r7 17 r1 r1 r1 r1 r1 r1 r1 r1 r1 r1 r1 r1 18 r4 r4 r4 r4 r4 r4 r4 r4 r4 r4 r4 r4 19 r5 r5 r5 r5 r5 r5 r5 r5 r5 r5 r5 r5 20 r8 r8 r8 r8 r8 r8 r8 r8 r8 r8 r8 r8 21 r3 r3 r3 r3 r3 r3 r3 r3 r3 r3 r3 r3 22 r9 r9 r9 r9 r9 r9 r9 r9 r9 r9 r9 r9 start exp 0 g8 g17 r1 g5 g18 r4 1 g8 g10 g5 g18 r4 2 g8 g21 r3 g5 g18 r4 3 g8 g13 g5 g18 r4 4 g8 g14 g5 g18 r4 5 r2 r2 r2 g19 r5 6 7 8 9 10 11 12 13 14 15 r6 r6 r6 r6 16 r7 r7 r7 r7 17 r1 r1 r1 r1 18 r4 r4 r4 r4 19 r5 r5 r5 r5 20 r8 r8 r8 r8 21 r3 r3 r3 r3 22 r9 r9 r9 r9 1.

let val id x = exp in id cursor const 2 id x 1. 4 [ ] ( ) id start ::= exp exp ::= fn id exp [ ] ::= ::= id const (exp) let val id = exp in exp end [ ] start,, id id 2 ::= (1) (9) start A ( ɛ ) α s s 1,..., s n (1) s 1 start s 1 start s 1 A α α s 1 α = α 1 s 1 α 2 α 1 α 1 = s i... s 2 α 2 As i+1... s n (2) (1)

let val id x = exp in exp const 2 id cursor id x 2. 1 2 3 2 5 2,5 2 ( 1) 2 5 3 5 2 ( 2) let, val, id x, =, exp, in, exp 5 ( 3) let, val, id x, =, exp, in, 3 5 5 2 exp exp 1 3 8 9 9 9 exp 2 exp exp end ( 2) 9 let 4 5 5 4 4 2 5 5 2 exp exp exp 1 4 start

let val id x = exp in [ ] const 2 id cursor id x 3. 1 5 start exp exp exp const 2 id cursor id x 4.

2 5 5 let val f = fn x => + x 1 in f (f + int int int ) end [ ]( ) ) end 5 4 e ::= x c cursor e e λx. e let x = e in e [ ] x c e λ, let Milner W [7] 5 U Cls Γ τ τ Γ σ := α 1... α n.τ τ := int α τ τ σ τ int τ := int α (τ τ) subst (S, τ) = τ := int (τ int ) τ := S(τ) (τ α ) subst(s, τ 1 ); subst(s, τ 2 ) (τ τ 1 τ 2 )

C(Γ, e) = cursortype := nil; cursorenv := Γ; C (Γ, e); return (cursortype, cursorenv) C (Γ, cursor) = cursortype := β; (β fresh) cursorenv := Γ; return cursortype C (Γ, x) = Γ(x) = α 1... α n.τ 1 return [β 1 /α 1 ]... [β n /α n ]τ 1 (β 1,..., β n fresh) Γ(x) = τ 1 return τ 1 C (Γ, c) = return int C (Γ, e 1 e 2 ) = τ 1 = C (Γ, e 1 ); τ 2 = C (Γ, e 2 ); S = U(τ 1, (τ 2 β)); (β fresh) subst(s, τ 1 ); subst(s, τ 2 ); return S(β) C (Γ, λx.e) = τ 1 = C (Γ{x : β}, e); (β fresh) return ( β τ 1 ) C (Γ, let x = e 1 in e 2 ) = τ 1 = C (Γ, e 1 ); σ = Cls(Γ, τ 1 ); return C (Γ{x : σ}, e 2 ) C (Γ, [ ]) = return β (β fresh) 5. C 6 5 C τ 1 β 1... β n. τ 2 τ 1 τ 2 = [α 1/β 1 ] [α n /β n ]τ 2 (α 1,..., α n fresh) U (τ 1, τ 2 ) let val ya = fn x => x in let val xb = fn x => x in let val xc = 1 in (fn x => x 1) x end 3 ya, xb, xc cursor : int α ya : γ. γ γ xb : γ. γ γ xc : int 3 ya xb xc xc ya xb x xb

7 Emacs[2] Emacs lambdamode lambda-mode web (http://www.cs.ise.shibaura-it.ac. jp/complement/) 6 lambda-mode 1. 2. 3. 2 3 auto-complete.el [1] Emacs auto-complete.el 1 6 Emacs 6. auto-complete auto-complete lambda-mode auto-complete id const 0 0 9 int +, -, /, * Emacs Lisp yacc kmyacc[4] EOF 3 4 2 2 2 (1) start acc (2) s 1 start s 1

(3) s 1 s 2 s 1 s 2 (4) (2) s 2 (4-a) s 1 s 2 (2) (5) (2) s 2 (5-a) 1 s 1 1 s 1 = 2 5 2 s 2 2 5 5 2 (1) 1 s 1 2 s 2 (2) 1 s 1 2 s 2 acc (3) 1 s 1 2 s 2 s 1 s 1 (3-a) (4) (1) auto-complete.el Emacs lisp max-lisp-eval-depth maxspecpdl-size 400, 1000 lambda-mode lambda-mode 7 lambda-mode Emacs 15 6 63 OS Windows XP Professional SP3 CPU Intel Core 2 Duo E7300 2.6GHz 3.25GByte Emacs Meadow(GNU Emacs 22.2.1)

7. lambda-mode

2 id const fn ( ) let val = in end start acc acc acc acc acc acc acc acc acc acc acc acc exp 1 1 1 1 3 8 1 1 1 9 9 1 5,2 5,2 5,2 5,2 5,2 5,2 5,2 5,2 5,2 5,2 5,2 5,2 fn 3 3 3 3 3 3 3 3 3 3 3 3 id 6 6 6 3 6 6 6 6 9 6 6 6 const 7 7 7 7 7 7 7 7 7 7 7 7 1 3 ( 8 8 8 8 8 8 8 8 8 8 8 8 ) let 9 9 9 9 9 9 9 9 9 9 9 9 val 9 = 9 in end 2 exp start acc acc acc exp 1 1 1 5,2 5,2 5,2 5 fn 3 3 3 id 6 6 6 const 7 7 7 1 ( 8 8 8 ) 8 let 9 9 9 val = in 9 end 9 2.

8 let Aditya [6] Haskell ML annotation [1] EmacsWiki: Auto complete. http://www.emacswiki.org/emacs/autocomplete. [2] GNU Emacs. http://www.gnu.org/software/emacs/. [3] Java development environment for Emacs. http://jdee.sourceforge.net/. [4] kmyacc. http://www005.upp.so-net.ne.jp/kmori/kmyacc/. [5] Shail Aditya and Rishiyur S. Nikhil. Incremental polymorphism. In Proceedings of the 5th ACM Conference on Functional Programming Languages and Computer Architecture, pages 379 405, Cambridge, USA, August 1991. [6] Robin Milner. A theory of type polymorphism in programming. Journal of Computer and System Sciences, 17(3):348 375, 1978.