ãã§ããï¼ ãScheme 手習いãã復å»ãã¾ãããæ£ç¢ºã«è¨ãã¨ã復å»ã§ã¯ãªããæ°ããçã«åºã¥ããæ°ãã訳ã§ãã
- ä½è : Daniel P. Friedman,Matthias Felleisen,å åæç·,横山æ¶ä¸
- åºç社/ã¡ã¼ã«ã¼: ãªã¼ã 社
- çºå£²æ¥: 2010/10/22
- ã¡ãã£ã¢: åè¡æ¬ï¼ã½ããã«ãã¼ï¼
- è³¼å ¥: 5人 ã¯ãªãã¯: 129å
- ãã®ååãå«ãããã° (34件) ãè¦ã
以åããã°ãã¦ãã«åºçããåºçããã¦ãããScheme手習い―直感で学ぶLispãã¯ã"The Little Lisper" ã®è¨³ã§ããå 容ããCommon Lisp ã§ããªããScheme ã§ããªã Lisp ã®æ¹è¨ã«ãã£ã¦æ¸ããã¦ããã®ã«ãé¦é¡ã« Scheme ãå ¥ã£ã¦ããã®ã¯ããã®æ¬ã®å¯ä¸ã®æ¬ ç¹ã ã¨åã¯æãã¦ãã¾ããã
ä»åã¯ã"The Little Schemer" ã®è¨³ã§ããåæ¸ã訳æ¸ãåå®å ±ã« Scheme ã«åºã¥ãã¦ãã¾ããç¾å¨ã§ã¯ãLisp ã¨è¨ãã°ãCommon Lisp ã Scheme ã®ãã¨ãæãããã«ãªãã¾ãããScheme ã®å®è£ ãç°¡åã«æã«å ¥ãã¾ããã¾ããLisp ã®ä¾¡å¤ãè¦ç´ããã¦ãã¾ããããæ代ã«ããã翻訳æ¸ãç¾ãã¾ããï¼
å¦ã¶ã®ã¯å帰
ãã®æ¬ã§å¦ã¶ã®ã¯ãå帰ããã°ã©ãã³ã°ãã§ãã
ä¸ççã«æå㪠Joel Spolsky æ°ã®ã¨ãã»ã¤ã®ä¸ã¤ã«ãJava スクールの危険ããããã¾ããä¸é¨ãå¼ç¨ãã¾ãã
ç§ã®ãããããªçµé¨ããè¨ããã¦ãããã¨ãä¼çµ±çã«å¤§å¦ã®ã³ã³ãã¥ã¼ã¿ãµã¤ã¨ã³ã¹ã®ã«ãªãã¥ã©ã ã§æãããã¦ãããã®ã§ãå¤ãã®äººããã¾ãç解ã§ããªããã®ã2ã¤ãã£ã: ãã¤ã³ã¿ã¨å帰ã ã
åªç§ãªããã°ã©ãã¼ã¨ããã§ãªãããã°ã©ãã¼ãåããææ¨ã®ä¸ã¤ããå帰ãç解ãã¦ãããå¦ãã§ããåªç§ãªããã°ã©ãã¼ãç®æããªããå帰çãªèãæ¹ãå¦ã¶å¿ è¦ãããã¾ããæ¬æ¸ã¯ãå帰ãå¦ã¶ããã®æé«ã®å ¥éæ¸ã§ãã
解説
Scheme æç¿ãã¯ãç¿ãããæ £ããã¨ããæãã§æ¸ããã¦ããã®ã§ãããºã«ã解ããããªæ¥½ãããããã®ã§ãããä¸æ¹ã§ããã®èæ¯ãç®çãç解ããªãã¾ã¾èªãã§ãã¾ãæããããã¾ããããã§ãåç« ãå°ã解説ãã¦ããã¾ããä½ããã£ã¦ããã®ãåãããªããã°ã以ä¸ãèªãã§ã¿ã¦ä¸ããã
第1ç«
Scheme ã®åºæ¬çãªé¢æ° carãcdrãconsãnull?ãatom?ãããã³ eq? ãå¦ã³ã¾ããLisp ãç¥ããªã人ã¯ãæ°é®®ãªæãã§èªããã§ãããã注æãã¦ããã ãããã®ã¯ãLisp ãä¸éå端ã«ç¥ã£ã¦ãã人ã§ãã第1ç« ãç«ã¡èªã¿ãã¦ããªãã ç¥ã£ã¦ãããã¨ã°ããã§ãã¤ã¾ããªããã¨æã£ã¦è²·ãã®ãæ¢ããªãã§ä¸ãããå帰ãåºã¦ããã®ã¯2ç« ä»¥éã§ãã
åãã£ã¦ãã人ããè¦ãã°ããããã®åºæ¬é¢æ°ã¨(ããã« cond 㨠quote ã¨)é¢æ°ãå®ç¾©ããç°å¢ãããã°ããã¥ã¢ãª Lisp ãä½ããã¨ããå³é¸ãããé¢æ°ã°ããã§ãã10ç« ã§ãScheme ã®ã¤ã³ã¿ã¼ããªã¿ã¼ãä½ãéã¯ã第1ç« ã«ç«ã¡è¿ã£ã¦ã¿ã¦ä¸ãããããããç çã®ããªããã£ãã ã¨ãããã¨ãåããã§ãããã
第2ç«
ããããå帰ãå¦ã³ã¾ããå帰ã¯ãåºåºé¨(null?)ã¨å帰é¨(èªåèªèº«ãå¼ã³åºã)ããæ§æããããã¨ãç解ãã¾ãããã
第3ç«
å ¥åã®ãªã¹ãããåºåã¨ãã¦æ°ãããªã¹ããçæãã¾ããå ¥åã®ãªã¹ãã¯ç ´å£ããã¾ããããããé¢æ°ããã°ã©ãã³ã°ã®æµåã§ãããªã¹ããçæããã«ã¯ cons ã使ãã¾ããcons ã¯ããªãã¸ã§ã¯ãæåè¨èªã§ãã newãC è¨èªã§ãã malloc() ã«ãããã¾ãã大åãªã®ã§ããä¸åº¦è¨ãã¾ããæ°ããå¤ãä½ãåºãããã®ã§ãå¤ãå¤ã¯ç ´å£ãããªãã®ã§ãã(ä¸è¦ã«ãªã£ãå¤ãå¤ã¯ãã´ãã¨ãã¦èªåçã«ååããã¾ãã)
第4ç«
èªç¶æ°ã®æ¼ç®ãå帰ã§æ±ãã¾ããèªç¶æ°ãå帰ã§æ±ããã®ã¯ãèªç¶æ°ã帰ç´ç(å帰ç)ã«å®ç¾©ããã¦ããããã§ãã
第5ç«
ãªã¹ãã®ãªã¹ãã«å¯¾ãã¦ãæ·±ãå帰ãã¾ããè¦æ¹ãå¤ããã°ãããã¯æ¨æ§é ã«å¯¾ããå帰ã§ãããªã¹ãã¯ãæ¨æ§é ã表ç¾ã§ããã®ã§ãã
第6ç«
å½±æ³å¸«ã¨ã¯ãè£å©é¢æ°ã®ãã¨ã§ããè£å©é¢æ°ã¨ããã¤ã³ã¿ã¼ãã§ã¤ã¹ãå®ç¾©ãã¦ããã¼ã¿ãæ½è±¡åãã¾ãã(ããã°ã©ã ã¯ç解ãããããªãã¾ãããScheme ã«ã¯ã¢ã¯ã»ã¹å¶å¾¡ããªãã®ã§ãå®å ¨ã«ã¯ãªãã¾ããã)
第7ç«
ãªã¹ãã§éåã表ç¾ãã¦ãéåæ¼ç®ãå®è£ ãã¾ãã
第8ç«
ã¤ãã«ãå¼æ°ã¨ãã¦é¢æ°ãæå®ãããããã«ãªãã¾ããé¢æ°åè¨èªã§ã¯ãé¢æ°ã第ä¸ç´ã®å¤ã§ããããã®ç´ æ´ããããå®æã§ããã§ããããç¶ç¶ãç»å ´ãã¾ãã
第9ç«
ã¨ã¦ãé£ããå 容ã§ããååã¯ãæªè§£æ±ºåé¡ã§ãã Collatz ã®é¢æ°ãåå§å¸°ç´çé¢æ°ã§ãªã帰ç´çé¢æ°ã®ä»£è¡¨ä¾ã§ãã Ackermann é¢æ°ããã¥ã¼ãªã³ã°ãã·ã³ã®åæ¢æ§åé¡ãããããªãç»å ´ãã¾ãã
å¾åã§ã¯ãYã³ã³ããã¼ã¿ãä½ãã¾ããYã³ã³ããã¼ã¿ã¨ã¯ãé¢æ°åã使ããã«å帰ãå¯è½ã«ããè£å©é¢æ°ã®ãã¨ã§ããYã³ã³ããã¼ã¿èªä½ããååã使ã£ã¦å帰ãã¦ããªããã¨ã«æ³¨æãã¦ä¸ããã(ãã® Y ã³ã³ããã¼ã¿ã BML ã§ãããã¨ãããã¤ãåããããããã¾ããã)
第10ç«
Scheme ã®ã¤ã³ã¿ã¼ããªã¿ã¼ã Scheme ã§å®è£ ãã¾ãããã®ã¤ã³ã¿ã¼ããªã¿ã¼ã¯ããªãåªç§ã§ã第9ç« ã§ä½ã£ã Y ã³ã³ããã¼ã¿ãåãããã¨ãã§ãã¾ãã
ãããã¦èªã¿ãã
原書 "The Little Schemer" の解説記事ãæ¸ãã¦ãã¾ãã®ã§ããããã¦ã©ããã