â
ãªãã¨ãªãHaskellãæ¶ãã¦ããã®ã§ãæ¹ãã¦Liskellã®ã³ã¼ããè¦ã¦ã¿ãã
ç解ã§ããï¼
ãµã³ãã«ã®Liskellã³ã¼ãããã©ããã風ã«Haskell風ã«è§£éãããã®ããããã¦ãã©ãå®è¡ãããã®ãããç解ã§ããããã«ãªã£ã¦ããã
ããã§æ©éãHaskellãæ¨ã¦ã¦(?)ãLiskellã«ç§»è¡ãã¹ããã©ãããã¡ãã£ã¨ã ãæ¤è¨ãã¦ã¿ãã
ã¨ãããããå
ã®è«æã®pdfãæµãèªã¿ããLiskellã®ã³ã¼ããEmacsã®SLIMEã§ç·¨éãå®è¡ãã¦ããåç»ãè¦ãã
(ã¾ã å®éã«Liskellãã¤ã³ã¹ãã¼ã«ããããã³ã¼ããæ¸ãããã¯ãã¦ãªãäºã«æ³¨æã)
ã¨ãããããèªåãç解ããé¨åã ãã¾ã¨ãã¦ã¿ãã
- Haskellããããå ¨ã¦ã¯åºæ¬çã«é 延è©ä¾¡ãã¤é 延ãªã¹ããç¡éã«ç¶ããã£ããããæ°åãlistã¨ãã¦å®ç¾©ãã¦ããå®éã«åç §ãããã¾ã§ã¯è©ä¾¡ãããªãã
- å ã ã®Haskellãåç½®è¨æ³ã¨ç¸æ§ãè¯ã(ã¨ããããä¸ç½®è¨æ³ãåãªãæ§æç³ã§ãããªã)ã®ã§ãæå¤ã¨ãããªã移è¡ã§ããããã«è¦ããã
- Haskellç±æ¥ã®è¡¨è¨ã¨ãLispç±æ¥ã®è¡¨è¨ãä¸é¨ãè¡çªãã¦ããã
- Lispã§ã,ã(ã³ã³ã)ã¯unquoteã ããLiskellã§ã¯ã¿ãã«åãã¨ãã
- Liskellã§ã¯ãã,ã(ã³ã³ã)åä½ã§ããå ´åã¯ã¿ãã«åãããå¾ãã«ç©ºç½ä»¥å¤ã®ä½ããç¶ãå ´åã¯unquoteã ã¨ãã¦ããï¼ï¼ï¼
- ä»ã«ããcar, cdr, consã¨ãã£ããLispç±æ¥ã®ååããããhead, tail, :(ã³ãã³)ã¨ãã£ããHaskellç±æ¥ã®ååã®æ¹ãåªå ããã¦ããããã ãåºæ¬çã«ã¯ã
- Lispã§ã,ã(ã³ã³ã)ã¯unquoteã ããLiskellã§ã¯ã¿ãã«åãã¨ãã
- ãªã¹ãçææç¶ãã¯ã[]ããã¤ã¾ããLispã§ã®ã(list 1 2 3)ãã¯ãLiskellã§ã¯ã([] 1 2 3)ããnilã¨æ··ä¹±ãããã ã
- ããã¦ããããç°¡æ½ã«æ¸ãçºã«ã%(1 2 3)ã(=ã([] 1 2 3)ã)ã¨ãããªã¼ãã¼ãã¯ãï¼ãç¨æããã¦ããã£ã½ãã
- åçåè¨èªã§ã¯ãªãã®ã§ãã·ã³ãã«(ã¨ãããæç¸)ã®quasiquote, unquote, unquote-splicingã¯ãããã®ã®ãã·ã³ãã«èªä½ãæ±ãæç¶ãã¯æä¾ããã¦ãªãã£ã½ãï¼
- defmacroã使ããã
- Haskellã®ã\ãã¯å½ç¶ãlambdaãåãããããã
- doå¼ã¯ç¡ãã£ã½ãï¼
- IOã¯å ¨é¨ã>>=ããã>>ãã使ã£ã¦è¨è¿°ããã£ã½ãï¼
- ããããèªåãèªã¿é£ã°ããã¨ããã«doå¼ã«é¢ããè¨è¿°ãããããç¥ããªãã
- Haskellã§ã¯ãã¼ã¿åãåã¯ã©ã¹ãã¢ã¸ã¥ã¼ã«åçã¯å¤§æåå§ã¾ããæç¸ã¯å°æåå§ã¾ããã¨ããå¶ç´ãããã£ã½ããããã®å¶ç´ã¯å¼ãç¶ããã¦ããã®ãï¼
- æ £ãã®åé¡ããç¥ããªãããã=ããç¡ãã®ã§ãletã¨ãã§æå®ã§ããããã¿ã¼ã³ãããå¼æ°ã®æå®ãåããã¥ããã
ãã¦ãããã¯ã©ããªã®ãâ¦â¦ã
èªåãè¦ãé¨åããæããããã®ã¯ãããã¯ã¶ã£ã¡ããããHaskellãSå¼è¡¨è¨ã«ãã¦ãã¤ãã§ã«defmacro使ããããã«ãããã¨ãããã®ã®ããã«æãã(èªã¿é£ã°ããã¨ããã«ä»ã«ãç¾å³ããé¨åãããããç¥ããªãããã©)ã
ãªã®ã§ããã®äºç¹ã«ã¤ãã¦èããã°è¯ãããã ã
- HaskellãSå¼è¡¨è¨ã«ããæ¨ã¿ã¯ï¼
- èªåã¨ãã¦ã¯ãSå¼è¡¨è¨ã®æ¹ã好ã¿ã ãããããã¯æ £ãã«ããé¨åã大ããã ãããããã¾ãä¸è¬çãªåªä½ã¨ã¯è¨ãã¥ããã®ã§ãä»åã¯ããã¯é¤å¤ããã
- 以åã®èå¯( http://d.hatena.ne.jp/ranekov/20070923 )ã«ãããã(èªåã«ã¨ã£ã¦ã®)Så¼ã®ç©¶æ¥µã®å©ç¹ã¯ãã³ã¼ãã¸ã§ãã¬ã¼ã¿ã«ãããã¨ããçµè«ãåºã¦ãããããããéçåè¨èªã®Haskellã«ã³ã¼ãã¸ã§ãã¬ã¼ã¿ã¯ã¡ãã£ã¨ç¸æ§ãæªãããã«æãã¦ãªããªããevalãªããã
- Haskellã«ãã¯ãã¯å¿
è¦ãï¼
- å ¨ã¦ãé 延è©ä¾¡ãªHaskellã«ã¯æ£ç´ããã¯ãã¯ãããªããããªæ°ã¯ãããã ãâ¦â¦ã
ã¨ããäºã§ãã¨ããããä»ã®ã¨ããã¯ãã©ããLiskellã«ãã¾ãå©ç¹ãè¦åºãäºãåºæ¥ãªãã£ãã
ã¨ã¯ããããã®ãããããããªæ¹é¢ã§å½¹ã«ç«ã¡ãããªæ°ãããã®ã§ãLiskellãåãçºæ®ããããªåéã®ãã®ãä½ããããªã£ãæã«ã¯ãLiskellã使ã£ã¦ã¿ããã¨æãã
- å ·ä½çã«ã¯ãèªåã§Lispã¤ã³ã¿ã¼ããªã¿æ¸ããããªã£ãæã¨ãâ¦â¦ã