4 ( )IT (C++/Java/Obj-C/Haskell/OCaml, /Web ) / SE ( ) ( ) ( ) (π /CCS/CSP) ( ) 2

Similar documents
WEBサービス超入門 mask.key

CNO2009_Enquete_Report.key

280-NX702J-A0_TX-1138A-A_NX702J.indb

導入基礎演習.ppt



aisatu.pdf

Sigma

Sigma

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.

Effective Android NDK Advanced Core Engineer

1

# 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

CARC, AIST

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

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

FX ) 2

FX自己アフリエイトマニュアル

untitled

ハーモニカと7日間の妖精

4 5

中期経営計画 「NEXTAGE‐05」説明会

1

Adobe AIR のセキュリティ

Microsoft Word - 教材ガイド一覧ビデオ.doc

¥×¥í¥°¥é¥ß¥ó¥°±é½¬I Exercise on Programming I [1zh] ` `%%%`#`&12_`__~~~ alse

(1)2004年度 日本地理

tottori2013-print.key

untitled

- 2 -

コンバートスター15シリーズ 製品パンフレット


2


電気通信大学 I 類 情報系 情報 ネットワーク工学専攻 CED 2018 システム利用ガイド ver1.2 CED 管理者 学術技師 島崎俊介 教育研究技師部 実験実習支援センター 2018 年 3 月 29 日 1 ログイン ログアウト手順について 1.1 ログイン手順 CentOS 1. モニ

Jacques Garrigue

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

BS18summer_H1_H4.indd


B B B B B B


net-h12_12.doc

(資料2)第7回資料その1(ヒアリング概要)



<4D F736F F D DEC8BC A95BD90AC E A982BA81698AB A B B4790DF90AB8EBE8AB FC89408A4F816A82CC93AE8CFC82C98AD682B782E9838C837C815B D

, , ,210 9, ,

untitled

<4D F736F F D2081A193B98BE EA97708CFB8DC08B4B92E D8D878CFB8DC0817A B4B816A81798A6D92E894C5817A2E646F63>


untitled

橡okamura-ppt.PDF

2


( )


1

夏目小兵衛直克

nenkin.PDF

-1-

19 3!! (+) (>) (++) (+=) for while 3.1!! (20, 20) (1)(Blocks1.java) import javax.swing.japplet; import java.awt.graphics;

10/ / /30 3. ( ) 11/ 6 4. UNIX + C socket 11/13 5. ( ) C 11/20 6. http, CGI Perl 11/27 7. ( ) Perl 12/ 4 8. Windows Winsock 12/11 9. JAV

(CC Attribution) Lisp 2.1 (Gauche )

2301/1     目次・広告

Java演習(4) -- 変数と型 --

guideline_all - コピー


haskell.gby

Microsoft Word - 11_thesis_08k1131_hamada.docx

2 1 Web Java Android Java 1.2 6) Java Java 7) 6) Java Java (Swing, JavaFX) (JDBC) 7) OS 1.3 Java Java

ex01.dvi

報告書.PDF

FD 2 ( ) FD 14 ( ) FD 39 ( )



BOX BOX 19 4 i

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

3 3.1 * *2 2

II (No.2) 2 4,.. (1) (cm) (2) (cm) , (

2

1.

Microsoft PowerPoint L02-Introduction-students ( )


ML Edinburgh LCF ML Curry-Howard ML ( ) ( ) ( ) ( ) 1


.g...N...|.[.g25

Dive into Algebraic Effects

組込みシステムシンポジウム2011 Embedded Systems Symposium 2011 ESS /10/20 FPGA Android Android Java FPGA Java FPGA Dalvik VM Intel Atom FPGA PCI Express DM

Java updated

Microsoft Word - 平成25年度調査研究事業報告書-四国大学山本 doc

ex01.dvi

関数のグラフを描こう

‘îŁñ…l…b…g08“ƒ.qxd

tonan-cs.indd

法人カタログ_2016vol1.indd

Taro10-岩手県警察航空隊の運営及

Parametric Polymorphism


Microsoft Word - keisankigairon.ch doc


Transcription:

Haskell DSL ( ) IT 2012. 3. 23 ( ) @

4 ( )IT (C++/Java/Obj-C/Haskell/OCaml, /Web ) / SE ( ) ( ) 2012 3 ( ) (π /CCS/CSP) ( ) 2

( )IT /FX 6 ( ) Coq 3

OCaml Scala SML# 2012/3/25( )14:00-1-109 SML# ( ) http://tinyurl.com/smlnagoya ( k-imai@itpl.co.jp ) 4

( )IT ( ) /FX http://www.itpl.co.jp/ 5

6

cf. MA(N,X) = 1 N N 1 i=0 R (X i) (N=5) (N=20) (N=90) 7

6, 9 Java Applet Windows (C++) Adobe Flash (ActionSctipt) Web (JavaScript/HTML5) (docomo, SoftBank(Java)/ AU(BREW)) iphone (Objective-C) Android (Java) f 8

/ Windows docomo Windows 8 9

( ) C e.g. lib*.a/.so, *.dll, JNI (Java Native Interface) NG : Java Applet,, Flash, Java e.g. Python / Jython, Ruby / JRuby NG : Flash, JavaScript, 10

DSL Haskell/Tek DSL C, Java ( ) TeX ( ) Haskell DSL (embedded DSL) Haskell ( ) 11

DSL Haskell/Tek TeX Haskell/Tek C Java C Java iphone Android JavaScript 12

Haskell/Tek MA(N,X) = 1 N N 1 i=0 R (X i) Haskell/Tek: i n i-(n-1) i (close) ma n i = sum_close (i-(n-1)) i candles / tofloat n n C float accum0 = 0.0F; for (int i0 = i - iparam[0] + 1; i0 <= i; i0++) { accum0 = accum0 + i_get(candles, i0).close; } i_put(series[0], i, accum0 / (float) iparam[0]); 13

2: Haskell/Tek: N 1 (R (X i) AV G { R (X),,R (X N + 1) }) 2 ( i=0 σ(n,x) = N ( ) = ( )+ ( ) Bol(K, N, X) = MA(N,X)+Kσ(N,X) sum_iter i j f = Σ (x is i to j) f(x) sigma_i n ma i = sqrt_ (sum_iter (i - n + 1) i dist) / tofloat n where dist i = pow2_ (close_at i - ma) i n σ(n,i) bol (n,a,b) i = let_ "ma" (MA.ma n i) $ \ma -> let_ "sigma" (sigma_i n ma i) $ \sigma -> tup5 (ma + b*sigma, ma + a*sigma, ma, ma - a*sigma, ma - b*sigma) (5 ) 14

C float accum0 = 0.0F; for (int i0 = i - iparam[0] + 1; i0 <= i; i0++) { accum0 = accum0 + i_get(candles, i0).close; } float ma = accum0 / (float) iparam[0]; float accum1 = 0.0F; for (int i1 = i - iparam[0] + 1; i1 <= i; i1++) { float x = i_get(candles, i1).close - ma; } accum1 = accum1 + x * x; float sigma = sqrt(accum1 / (float) iparam[0]); i_put(series[0], i + 0, ma + fparam[1] * sigma); i_put(series[1], i + 0, ma + fparam[0] * sigma); i_put(series[2], i + 0, ma); i_put(series[3], i + 0, ma - fparam[0] * sigma); i_put(series[4], i + 0, ma - fparam[1] * sigma); σ 15

Haskell/Tek ( ) C bol (n,a,b) i = let_ "ma" (MA.ma n i) $ \ma -> let_ "sigma" (sigma_i n ma i) $ \sigma -> tup5 (ma + b*sigma, ma + a*sigma, ma, ma - a*sigma, ma - b*sigma) float accum0 = 0.0F; ( ) ( ) for (int i0 = i - iparam[0] + 1; i0 <= i; i0++) { accum0 = accum0 + i_get(candles, i0).close; } float ma = accum0 / (float) iparam[0]; float accum1 = 0.0F; for (int i1 = i - iparam[0] + 1; i1 <= i; i1++) { float x = i_get(candles, i1).close - ma; 16 accum1 = accum1 + x * x;

14 RSI DMI RCI ROC MACD %R 17

15... Haskell/Tek C (ios ) 7... 1... Haskell/Tek Java (Android ) 18

Haskell 1758 ( 777, C 981 ) C 2077 Java 2257 19

Haskell/Tek

Haskell 1. / C, Java, JavaScript,... (Java C ) Language.C.Quote(*1) 2. EDSL (*1) language-c-quote: http://hackage.haskell.org/package/language-c-quote 21

Language.C.Quote Haskell Haskell C C Haskell do.. (bodyexp, bodystmts) <-... C tell [C.BlockStm [cstm for(int $id:counter=$f ; $id:counter<=$t ; $id:counter ++) { $items:bodystmts $items:(makeassigns initvars bodyexp) } ] ]; 22

EDSL Haskell/Tek C/Java Haskell C Java Haskell/Tek Haskell (.exe ) C -- ma n i = sum_close (i-(n-1)) i candles / tofloat n -- C main = printccode ma -- main = printjavacode ma -- Java -- main = randomrun ma -- Java 23

EDSL ( 1) EDSL Tek ( ) printccode CLanguage Haskell/Tek Tek (EDSL ) printjavacode JavaLanguage randomrun HaskellRunner 24

EDSL ( 2): Kiselyov (*2) ( ) gen Haskell/Tek gen ( Lang l) gen gen CLanguage JavaLanguage HaskellRunner (*2) Finally Tagless, Partially EvaluatedTagless Staged Interpreters for Simpler Typed Languages, Journal of Functional Programming 19(5):509-543, 2009 25

DSL

DSL (1) LexiFi(*3) LexiFi OCaml DSL 1 DSL (*3)http://www.lexifi.com/ 27 LexiFi Web ( )

DSL (2) Paraiso Paraiso (*4) DSL CUDA+MPI, OpenMP C (*4)http://paraiso-lang.org/wiki/index.php/Main_Page 28

C Java Haskell DSL C EDSL 29

GUI DSL DSL Coq 30