å§ãã¦ä»æ§æ¸ãèªãã æ¥
éææ¥ã®å¤ã®äºã§ããããµã¨ããäºã§ããããã«é¤æ°ã®æ¢ç´¢ã®åå¼·ã«ã¤ãã¦
ãã®å¾ã©ããªã£ãã®ãã¨ããå
容ã®äºãèããã¾ãã
ãã®æã«id:nyaxtãããSICPã®ircãæãã¦ããã¾ãã
nyaxtããã®ããã°ã«ãæ¸ãã¦ããã®ã§ãããã¡ãã§ãåç¥ãã¡ããã¾ãâ
SICPã®ãªã³ã©ã¤ã³åå¼·ä¼ãéæå¤22:00~24:00ã¾ã§ã宿çã«éå¬ãã¦ãã¾ãã èå³ã®ããæ¹ã¯ããããªãã§ããã®ã§ãIRCã®ãã£ã³ãã«ã¾ã§ãè¶ãä¸ããã #sicp-seminar-online @ irc.freenode.net ãã°ã¯å ¬éãã¦ãã¾ãï¼http://irc.nyaxtstep.com/sicp ãã 詳ããã¯ãã¡ãhttp://d.hatena.ne.jp/nyaxt/20080630#1214829553
æåã¯nyaxtããã®ustãè¦ã¦ããã®ã§ããè¦ã¦ãã¦ãããåãããªãã®ã§
èªåã®SICPã®å¾©ç¿ãäºç¿ããã¦ãã¾ãã
ãã®æã«ç§ããã£ã¦ããã®ããã§ã«ãã¼ãã¹ãã§ã»ã¨ãã©å
¨é¨ã³ã¼ã
çè§£åºæ¥ã¦ãªãã£ããã§ã(ä»ç¾å¨ããã®ç¶æ
ãç¶ãã»ã»ã»)
質åã¨ãããããã¦ãã®ã§ãããã£ã±ãçè§£åºæ¥ã¦ãªãã®ã§
ã¨ãããããã§ã«ãã¼ã®å°å®çããé¢ãã¦ã¿ãäºã«ãã¾ãã
ãã®æã«id:nishiohirokazuããã¨nyaxtãããä½ããä¼è©±ãã¦ãã¦
ç§ã¯ï¼ï¼ï¼ã ã£ãã®ã§ä½ãããã«ã¤ãã¦è§¦ããªãã£ããã§ããã©
西尾ãããç§ã®ããã«è§£èª¬ãã¦ããã¾ãã
<nishio> yukkyã®ããã«ä»ã®è©±é¡ãããä¸åæ¸ã㨠<nishio> (else + 1 2)ã¯æ£ããã§ãããã (ææã³ã¼ã) ã(cond ((= 1 2) "dummy") ãã(else + 1 2)) <yukky> æ£ããããããªãï¼ (â確証ããªãåã§è©±ãã¦ã¾ãã»ã»ã»Ï(ï¿£ ï¿£|||) ) <nishio> (else * 2 3)ã¯condã®æå¾ã«æ¸ãã¦ãã£ã¦ã <nishio> ãã¤ä»ã®æ¡ä»¶ã#tã«ãªããªãã£ãã¨ã <nishio> æçµçã«ããããè¿ãã§ããã <yukky> (else * 2 3)ã®æï¼ <nishio> ãã <yukky> 3ã㪠(âä»èãã¦ã¿ãã¨è¯ãæ£è§£ãããªãã»ã»ã»Ï(ï¿£ ï¿£|||) ) <nishio> æ£è§£ <nishio> ã§ã <nishio> ãã®çç±ã¯ï¼ <nishio> ãªãã§æãç®ãã6ã«ãªããªãã®ï¼ <yukky> æåã¯ãã£ã±ã6ã ã¨æã£ãã®ã <yukky> ã§ã <yukky> åã®é¤æ°ã®æ¢ç´¢ã®ã¨ããã§ <yukky> ä¼¼ããããªæ¡ä»¶ããã£ã¦ <yukky> ããã§ <yukky> (* 3 2) <yukky> ãå½ã¦ã¯ãã¦èãã¦ã¿ãã®ã <nishio> ãããã <yukky> 3ã«*2ãããã®ãçããªãã ãããã© <yukky> ãã®å ´åã¯æ¡ä»¶ãåãããªãã®ã§ <yukky> ãããªããã® <yukky> 3ã«*2ééã£ã>< <yukky> 3ã ããè¿ãã¨æã£ããã <yukky> ã ããçãã¯3 (âä»è¦ã¦ã¿ãã¨åéããã¦ãã¨æããã¾ãã»ã»ã»Ï(ï¿£ ï¿£|||) ) <nishio> æ¡ä»¶ãããããªãã£ã¦ã©ãããæå³ï¼ <yukky> (define (find-divisor n test-divisor) <yukky> (cond ((> (square test-divisor) n) n) <yukky> (( divides? test-divisor n) test-divisor) <yukky> ( else (find-divisor n (+ test-divisor 1))))) <yukky> å ·ä½çã«ã¯ãã®å¼ã§èãã¦ããã ãã© <yukky> (+ test-divisor 1) <nyaxt> ããã(else ããlistã®æå¾ã®è¦ç´ ãè¿ãçç±ã¯è¬ã ãªãã ãã¯ãå±éããªããã«è§£ããããã ãããï¼ <nishio> æé»ã®begin > nyaxt <yukky> test-divisor ã«1ãå ãããã®ãçãã ãã© <yukky> ã§ããã£ãã®å¼ã®å ´å㯠<yukky> elseã®é¨åãè¿ãã¨åãã£ã¦ãã®ã§ <yukky> 3ããªãã¨ãããã (âæå³ä¸æãªäºæ¸ãã¦ãã®ã§ãã£ã±ãåéãã»ã»ã»Ï(ï¿£ ï¿£|||) ) <nyaxt> nishio: ã¡ããç´å¾ããthx <yukky> æé»ã®beginã ãã§ç´å¾ããã®ï¼ï¼ï¼>< <nishio> ã£[ä¸éæ°ã¯å¤©æ] <yukky> ãã¼ã ãããããã <nishio> (cond ((= 1 2) "dummy") <nishio> (else (* 2 (+ 1 2)))) <nishio> ããã¯ããããè¿ãã§ããã <yukky> 3ãããªãã®ããããï¼ï¼ <yukky> ããã¼ã¼ã¼>< <yukky> ãã®ã¿ã¤ã ãæã>< <nishio> ãããããã¦å¾ ã£ã¦ãªãã§å®è¡ãã¦ã¿ãã°æ¸ã話ãªã®ã ãã© (âãã³ãã£ã¦ã¦æãã¤ãããã¾ããã§ãããã»ã»ã»Ï(ï¿£ ï¿£|||) ) <nishio> 䏿£è§£ <yukky> å®è¡ãã¦ã¿ãã¼ï¼ <nishio> ã¨ããã§Schemeã®ã³ã¼ãã£ã¦ã©ããã£ã¦å®è¡ãã¦ããï¼ <nishio> goshã使ã£ããã ãã©ã«ã¼ã½ã«ãç§»åã§ããªãã¦ä¸ä¾¿ã ã£ã <yukky> gosh使ã£ã¦ãã¼ï¼ <nishio> ã¨ãã£ã¿ã§ç·¨éãã¦ããå®è¡ï¼ <yukky> ãã®ã¾ã¾ã¿ã¼ããã«ãããã (âåºæ¬ç´æã¡ãªãã§ããã©é½åã«ããgosh.vimãªã©é©å½ã«ä½¿ã£ã¦ãã¾ã) <yukky> 使ãã¥ããã®ã¯ç¢ºããªãã ãã©ãã¼ããã (âgoshã¯ã¤ã³ã¿ããªã³ã¿ãªã®ã§ã³ã³ãã¤ã©ã¼ã®æ¹ã便å©ãã) <nyaxt> goshã«readlineãµãã¼ãã£ã¦ã¤ããããªããã ããã <nyaxt> gosh-rlã¨ããã®ãã¿ã¤ãã <nishio> ãã <nyaxt> ãã¼ <nyaxt> ããããã«ãªã£ã <nyaxt> ããã¼ <yukky> gosh> ( cond (( = 1 2) "dummy" ) (else ( * 2 ( + 1 2)))) <yukky> 6 <yukky> ãªãã§ã¼>< <nishio> ( cond (( = 1 2) "dummy" ) (else * 2 ( + 1 2))) <nishio> ããã¯ãããã§ããã <yukky> gosh> ( cond (( = 1 2) "dummy" ) (else * 2 ( + 1 2))) <yukky> 3 <yukky> ãã£ã¦ãªããããªããããããï¼ï¼ <nishio> çµæã¯åã®æå¾ éã <nishio> ãã¦ãã®äºã¤ã®å¼ã®éãã¯ä½ã§ããã <yukky> æ¬å¼§ããªãããããªãã¦ããããã>< <yukky> ( * 2 ( + 1 2)) <yukky> ã³ã³ãè©ä¾¡ãã¦6 <yukky> * 2 ( + 1 2) <yukky> ééã <yukky> ( + 1 2) <yukky> ã³ã³ãè©ä¾¡ãã¦ï¼ <yukky> ãªã®ããªãã¨ããã <yukky> éãã¯æ¬å¼§ä»¥å¤è¦ããªããªã>< <nishio> ãã <nishio> ééãã¨ãããã <nishio> (else x y z)ã£ã¦æ¸ãã¦ãã£ããã <nishio> xãè©ä¾¡ãã¦ãyãè©ä¾¡ãã¦ãzãè©ä¾¡ã㦠<nishio> æå¾ã«zãè¿ã <nishio> xã*ã§ãã£ã¦ãåããã¨ã <yukky> ããããã®å ´å㯠<yukky> (else * 2 ( + 1 2))ã¯ããã¨ã㦠(âæ£ãã㯠(else (* 2 ( + 1 2)))ã ã¨æã) <yukky> (else * 2 ( + 1 2) (âæ£ãã㯠(else * 2 ( + 1 2)) æ¬å¼§ã1ã³è¶³ããªã>< ) <nishio> ããã¯(begin x y z)ã¨åãæåãã£ã¦ããã§ ãã£ãnyaxtã«ã¯ãæé»ã®beginãã£ã¦è¨ã£ãã <yukky> æé»ã®begin? <yukky> (else ( * 2 ( + 1 2)) <yukky> ã³ã³ã¯ãã£ã±ãããã© <yukky> (else * 2 ( + 1 2)) <yukky> æ¬å¼§ããªããããã§ <yukky> è©ä¾¡ãéãããã>< <yukky> * 2 <yukky> ããã®é¨åãã¹ã«ã¼ï¼ï¼ <nishio> gosh> (cond ((= 1 2) "dummy") (else * (display 1) (+ 1 2))) <nishio> 13 <nishio> æ¬å¼§ããªããããã§ï¼Schemeã¯æ¬å¼§ãè¶ éè¦ï¼ï¼ <nishio> ä»ã®å¤ãã®è¨èªã ã¨æ¬å¼§ãã¡ãã£ã¨ãããã§ã大ä¸å¤«ã ãã©ã Lispya <nishio> LispãSchemeã¯æ¬å¼§ããããã«ãã£ã¦ãã¨ã©ã¼ã«ãªã å³ããè¨èªã§ãã <yukky> >< <yukky> (else * (display 1) (+ 1 2))) <yukky> ããã£ã¦ <nishio> æ¬å¼§éè¦æ¬å¼§éè¦ã大äºãªãã¨ãªã®ã§äºåº¦è¨ãã¾ããã <yukky> 1ã¨3ããã£ã¤ããã®ã§13ï¼ <nishio> ãã <yukky> æ¬å¼§éè¦ï¼ <yukky> ããããã£ã±ããã£ãã® <yukky> (else * 2 ( + 1 2))ã¯ï¼ <yukky> æ¬å¼§æãã¦ããã© <yukky> ã©ããã¦3ã¨ããè©ä¾¡ã«ãªã£ãã®ã <yukky> ãããã®ãããéè¦ï¼ <nishio> ãã <yukky> 西尾ãããããã>< <yukky> æé»ã®beginã£ã¦ä¸ä½ããã <nishio> ãï¼ <yukky> ãã®è©ä¾¡ã®éããåãããªãã£ãã <yukky> æ©ã¾ãéãã¦ä½ãæã«ã¤ããªããã¼>< <nishio> R5RSã£ã¦è¦ããã¨ããï¼ <yukky> ãªãï¼ï¼ï¼ <nishio> http://www.unixuser.org/~euske/doc/r5rs-ja/ <nishio> PDFãä»ãããã¦ã³ãã¼ã <nishio> ã§ãbeginã®æã¨condã®elseã®æãèªã <nishio> æåã¯ãã¾ãã¡ããããªããããããªããã©ã <yukky> ãããã¦ã³ãã¼ãããï¼ <yukky> beginã®ã¨ããã£ã¦ <yukky> ä½ç« ã®ãã³ï¼ <nishio> æ¤ç´¢ <yukky> ã´ã¡ã³>< <yukky> ã¡ãã£ã¨ãããããã«æ¤ç´¢ã«æ°ä»ãã>< <yukky> ãã cond å¼ãæ«å°¾æèã«ãã£ã¦ï¼(<å¼1 > => <å¼2 >) <yukky> ã¨ããå½¢å¼ã®ç¯ããã¤ãªãã°ï¼<å¼2 > ã®è©ä¾¡ããçµæã¨ <yukky> ãã¦çãã (æé»ã®) æç¶ãå¼åºãã¯æ«å°¾æèã«ããã <yukky> <å¼2 > ããèªèº«ã¯æ«å°¾æèã«ã¯ãªãã <yukky> ããåãããªããã©ãããããã¨ãªã®ããªãï¼ <nishio> beginã®æ¹ãèªãã ï¼ <yukky> ãã <yukky> (begin <æ«å°¾å>) <yukky> (do (<ç¹°è¿ã仿§>*) <yukky> (<ãã¹ã> <æ«å°¾å>) <yukky> <å¼>*) <yukky> ãã ã <yukky> <cond ç¯> <yukky> ââ (<ãã¹ã> <æ«å°¾å>) <yukky> <case ç¯> <yukky> ââ ((<ãã¼ã¿>*) <æ«å°¾å>) <yukky> <æ«å°¾æ¬ä½> <yukky> ââ <å®ç¾©>* <æ«å°¾å> <yukky> <æ«å°¾å> <yukky> ââ <å¼>* <æ«å°¾å¼>4.1.1. 夿°åç § <yukky> <夿°> æ§æ (âãã®é¨åã ããã¨æãç®æãå ¨ã¦ã³ããã§è²¼ã£ã¦ã¾ãã»ã»ã») <nishio> ããè¦ã¦ãããããªãã§ãã (âãã®éãã§ãã»ã»ã»Ï(ï¿£ ï¿£|||) ) <nishio> ãããã¹ã¦ã® <ãã¹ã> <nishio> ãå½å¤ã¸ã¨è©ä¾¡ãããã¨ãï¼else ç¯ããªããã°ãã®æ¡ä»¶å¼ã® <nishio> çµæã¯æªè¦å®ã§ãããï¼else ç¯ãããã°ãã®å <å¼> ãè©ä¾¡ <nishio> ããã¦ãã®æå¾ã®å¼ã® (ï¼åã¾ãã¯è¤æ°åã®) å¤ãè¿ãããã å <ãã¹ã> å¼ãå·¦ããå³ã¸ã¨è©ä¾¡ããï¼çå¤ (6.3.1 ç¯å <nishio> ç §) ã¸ã¨è©ä¾¡ãããæåã®å¼ã®å¤ãè¿ãããã <nishio> (begin <å¼> <å¼> . . . ) ã©ã¤ãã©ãªæ§æ <nishio> å <å¼> ã鿬¡çã«å·¦ããå³ã¸ã¨è©ä¾¡ããï¼æå¾ã® <å¼> ã® <nishio> (ï¼åã¾ãã¯è¤æ°åã®) å¤ãè¿ãããããã®å¼åã¯ï¼å ¥åºå <nishio> ãªã©ã®å¯ä½ç¨ãé åºã©ããã«èµ·ããããã«ä½¿ãããã <nishio> ãã®PDFãã³ãããã«ãããªã <yukky> ãããã¹ã¦ã® <ãã¹ã> ãå½å¤ã¸ã¨è©ä¾¡ãããã¨ã <yukky> ã£ã¦ããã®ããã£ãã®ããã¼ã§ <yukky> else ç¯ããªããã°ãã®æ¡ä»¶å¼ã® çµæã¯æªè¦å®ã§ãã <yukky> ãªãã ãã©elseããã£ãã®ã§å®ç¾©åºæ¥ã¾ãã <yukky> ãã®æå¾ã®å¼ã® (ï¼åã¾ãã¯è¤æ°åã®) å¤ãè¿ããã <yukky> ã£ã¦ããã®ã¯ãªãã¨ãããã£ããã© <yukky> ããããã®æ¬å¼§ãæãã¦ãããã¨ã§ <yukky> ä½ãèµ·ãã£ããã ããããããï¼ <nishio> (else (+ 1 2))㯠<nishio> ä¸çªå¤ã®ãªã¹ãã«ããã¤ãã®ãå ¥ã£ã¦ããï¼ <yukky> 2å <yukky> 3åã ï¼ï¼ <nishio> ä¸çªå¤ <yukky> (else (+ 1 2))ã¯elseãããªããã0ããªãï¼ï¼ <nishio> ( ) <-ä¸èº«ã0åã®ãªã¹ã <yukky> 空ãªã¹ãï¼ <nishio> 0ã£ã¦ãã¨ã¯ãªããã <yukky> (else)âä¸ã®æ¬å¼§ãæãã <yukky> ã¨è¦ãã <yukky> 1ã³ãªã®ããªã <yukky> elesã ããå ¥ã£ã¦ããªã¹ã (âãã±ãã±ã ã><) <nishio> NO <yukky> åãã£ãï¼ <yukky> 2åã <yukky> (else)ã§1ã³ <yukky> (+ 1 2) <yukky> ã§1ã³ <yukky> åè¨2å <nishio> ã <nishio> æ£è§£ <nishio> ã§(else + 1 2)ã¯ä½åã <nishio> 1ã³ããªï¼ <nishio> ã¡ãã <yukky> ãªãã§ã ããï¼ï¼ <yukky> åç´ã« <yukky> else + 1 2ã§4åï¼ <nishio> ãã <nishio> ããããããããã®ãæå¾ã®å¼ãã£ã¦ã©ãã <yukky> (else (+ 1 2))ã§è¨ã£ãã <yukky> (+ 1 2)) <yukky> (else + 1 2)ã§è¨ã£ãã <yukky> å·¦ããè©ä¾¡ãã¦ãããã <yukky> æå¾ã¯2ã㪠<nishio> ãããã <nishio> æ£è§£ <yukky> è¯ãã£ããw <yukky> ããããã£ãã®å¼ã«å½ã¦ã¯ãã¦ãã㨠<yukky> ( cond (( = 1 2) "dummy" ) (else * 2 ( + 1 2))) <yukky> ããã3ãè¿ãã®ã¯ä»ã®çå±ã¨ãã£ããã ãï¼ <nishio> ãã <nishio> æ£è§£ <yukky> (else ( * 2 ( + 1 2))))ã¨ã¯è©ä¾¡ã®ä»æ¹ãéããã®ã <nishio> ãããã <nishio> ããåºæ¥ã¾ãã <yukky> è¯ãã£ãw <yukky> ãã£ããããw <yukky> å®ã¯å å¿ããããããªããããããèãã¦ãw
é·ããªãã¾ããããããªæãã§ãã£ã¨ãã£ãããããèããããã¦ãã¾ãã
ä¸ã®ãã£ããã§æ¬å¼§å
ã«æ¸ããã¦ãã®ã¯ç§ã®æ°æã¡ã ã£ãããã¾ãw
åªããä¸å¯§ã«æãã¦ããã£ãã®ã§ã¾ã1ã³åé¡ãæ¸ãã¾ããâ
nyaxtãã西尾ããæ¬å½ã«ã©ãããããã¨ããããã¾ããï¼Â´>人<ï½ï¼
ãã®å¾æãããã¾ã§Schemeã®ä»æ§æ¸ã§ããR5RSãåãããããªé¨åã ã
ç®ãéãã¦ãã¾ãã
R5RSãèªãã§ãã¦R5RSãä½ãã«ä¼¼ã¦ãããªãã¨æã£ããã§ããããã¯
[æºå¸¯ã®åæ±èª¬ææ¸]ã§ããw
çããã®æè¦ã¨ã¯ããã¦ããããããã¾ãããã»ã»ã»(ã。â§â¡â¦)ã
å§ãã¦ããã°ã©ãã³ã°è¨èªã®ä»æ§æ¸ãèªãã æ¥ã¯ã¨ã£ã¦ã楽ããå¤ã§ããâª
ã¾ãéææ¥ã«ãªã³ã©ã¤ã³ã§SICPåå¼·ãã¾ãd(^^*)