æãéèŠã§ãããã©ã®ããŒã«ã§ãæãç¥èŠã§ããªãç¹æ§ã¯ãããã䜿çšããåŸåã®ãã人ã
ã®ç¿æ
£ã®åœ¢æãžã®åœ±é¿ââã§ãã
ãšãã¬ãŒã»ãŽã£ãã»ãã€ã¯ã¹ãã©
ããŒã1ã¹ããŒã ã®æŠèŠããŒã2ã¹ããŒã ã®æ·±åããŒã3 IronSchemeã®ç·Žç¿ã¯ããã«
ããã°ã©ãã³ã°ã®å®è·µã§ã¯ãå€ãã®å ŽåãããŸããŸãªç®¡çããã»ã¹ããã¹ããç£èŠãèªååããå°ããªã¹ã¯ãªãããäœæããå¿
èŠããããŸãã ãŸããã¢ããªã±ãŒã·ã§ã³ã«ã€ã³ã¿ãŒããªã¿ãŒãåã蟌ãããã¢ã€ãã¢ããã¹ãããããã®ãããã¿ã€ããäœæããå¿
èŠãããããšãçãããããŸããã ãããã®ç®çã®ããã«ãããŸããŸãªäžè¬çãªJavaScriptãPythonãLuaãBashãBATãPHPããŒã«ãªã©ã䜿çšã§ããŸãã ãŸããããã¹ã圢åŒãXMLãJSONãCSVãããã«ã¯KVã䜿çšãããå Žåã¯ãæ§é åããŒã¿ããã¡ã€ã«ã«ä¿åãããããããã¯ãŒã¯çµç±ã§è»¢éããå¿
èŠããããŸãã ãããããã®ãããªåºãç¥ãããããŒã«ã®å©ç¹ãšæ®åã«ãããããããããæè»ã§ãšã¬ã¬ã³ããªããŒã«ãèŠã€ããããšã«å·çããããšã§ãç§ã¯æŸã£ãŠãããªãã£ãã
ãããã£ãŠãç§ã¯ãã€ãŠLispãã¡ããªãŒã®èšèªã«æ³šæãåããŸããã ãŸããLispã§ã¯ããã¹ãŠã®é³¥ã1ç³ã§äžåºŠã«æ®åœ±ã§ããçŸãããšã¬ã¬ã³ãã§ãã ããããããŒãºãšå¥œã¿ã«åãããå€ãã®å®è£
ãšæšæºãããããã§ãã ç¬ç«ããèšèªãšããŠãåã蟌ã¿èšèªãšããŠãæ©èœããŸãã ããŒã¿ãšããã°ã©ã ã³ãŒãã衚ãåäžã®åœ¢åŒããããŸãã ãããŠæãéèŠãªããšã¯ãå¿
èŠã«å¿ããŠãç¬èªã®ã€ã³ã¿ãŒããªã¿ãŒãäœæããããšã¯äžå¯èœãªäœæ¥ã§ã¯ãããŸããã
Lispã䜿çšãã¹ãå Žåãšäœ¿çšããªãå Žå ãã®èšäºã¯ãã€ã³ã¿ãŒãããäžã®ããŸããŸãªèšäºã«åœãŠãããŠããŸãã ãã®ãããã¯ã«ã€ããŠè°è«ããããšã¯æ³å®ããŠããŸããããLispã䟿å©ã«ãªã£ãå Žæã«ã®ã¿æ³šæããŠãã ããã ã»ãšãã©ã®å Žåãçµã¿èŸŒã¿èšèªãšããŠLispã䜿çšããŸããã ã³ã³ãœãŒã«ãä»ããŠã¢ããªã±ãŒã·ã§ã³ã管çããæè»ãªæ§æãã¡ã€ã«ãäœæããæ§é åããŒã¿ãä¿åãããããã¯ãŒã¯çµç±ã§ããŒã¿ã転éããèªå®¶è£œã®RPCãå®è£
ããŸãã ç§ã®æèŠã§ã¯ãäžèšã®ãã¹ãŠã®ãªãã·ã§ã³ãåãæ§æãæã¡ãïŒæ§æãšæ©èœã®ç¹ã§ïŒãã®å Žã§æ¡åŒµã§ãããšäŸ¿å©ã§ãã
ç§ã¯èªåãLispã®äžçã®å°éå®¶ãšã¯èããŠããŸããããŸããæç€ºãããè³æã®100ïŒ
ã®æ£ç¢ºæ§ãä¿èšŒããŸããã ãã®ã·ãªãŒãºã®èšäºã®ç®çã®1ã€ã¯ãããŸããŸãªSchemeå®è£
ã«é¢ããããŸããŸãªæ
å ±ã1ãæã§æ¯åœèªã§åéããããšã§ãã äžè¬ã«ããã®è³æã¯ãçç±ãç¥ããã人åãã§ã¯ãªããæ¹æ³ãç¥ããã人åãã§ãã 誰ãããã®ãããã¯ãé¢çœããŠäŸ¿å©ã ãšæãå Žåã¯ãæžããŠãã ããã
éå§ãã
Lispã«é¢ããã»ãšãã©ãã¹ãŠã®èšäºã¯ã1958幎é ã«ãžã§ã³ã»ããã«ãŒã·ãŒã«ãã£ãŠçºæãããæãå€ãé«ã¬ãã«ã§æ±çšã®ããã°ã©ãã³ã°èšèªã®1ã€ã§ããLispããå§ãŸããŸãã Lispã®å€ãã«ãããããããããã¯æ©èœçã§æç¶ãåã®ãªããžã§ã¯ãæåã¹ã¿ã€ã«ã§æžãããšãå¯èœã«ãããã«ããã©ãã€ã èšèªã§ãã åæã«ããã®ãã¹ãŠã®ãã«ããã©ãã€ããªãã£ã¯ãããªããã£ãã§çµ±äžãããæ§æãããããSåŒãä»ããŠå©çšã§ããŸãã Backus-Nauraã®åœ¢åŒã§Lispæ§æãèšè¿°ããããã«ã¯ã7è¡ã ãã§ååã§ããããã¡ããäºçŽãå¿
èŠã§ãã Lispã§ã®é·ãéçºã®æŽå²ã®äžã§ãã³ã³ãã¥ãŒã¿ãŒãµã€ãšã³ã¹ã®æé«ã®é è³ãå°æããå®ç³ã®ããã«ç£šãäžããŠããã®ã§ãã ããããæããæããããã©ã±ããã®å±±ã®ããã«ãLispãéåžžã«äººæ°ããããšã¯èšãããããã¯ããã°ã©ã ãäžèŠããŠææ¡ããã®ãé£ããããŸãã ããããå°ãç·Žç¿ããåŸããã®ããã°ã©ãã³ã°æ¹æ³ãæäŸããå¯èœæ§ããäžå¿«æãåã³ã«å€ãããŸãã å°ãªããšãããã¯ç§ãšäžç·ã§ããïŒã
ããæ£ç¢ºã«ã¯ãLispã¯ããã°ã©ãã³ã°èšèªã§ã¯ãªããLispãã¡ããªãŒã®èšèªã®éçºã«åºã¥ããã¢ã€ãã¢ã§ãã 仿¥ãéåžžã«å€ãã®Lispæ¹èšãããããããã®ããã«å€ãã®å®è£
ããããŸãã Lispã€ã³ã¿ããªã¿ãæžãã®ã¯æ¯èŒçç°¡åã ããã§ãã ãã®ãããæŽå²ã®èŒªã¯ãCommon LispãSchemeãClojureãæã人æ°ã®ããæ¹èšã«ãªã£ãããšã«å€ãããŸããã åæ¹èšã¯ãç¬èªã®ãããã«ç°ãªãç®æšã远æ±ããŠããŸãã Common Lispã¯ããªãå€ãæ¥çæšæºã§ããããã®æŠåšåº«ã«ã¯å°æ°ã®ã©ã€ãã©ãªãšéçºããããŸããã ã¹ããŒã -ä»ã®ãã¹ãŠã®æ©èœãããŸããŸãªã¹ã¿ã€ã«ãããã°ã©ãã³ã°ã¢ãããŒãã衚çŸã§ããåºæ¬çãªæ§é ãæå°éã«æããããšãç®æããŠããŸãã ã€ãŸããããããªã¹ãã®ã€ã³ã¿ãŒããªã¿ãŒãšéçºãããæšæºã©ã€ãã©ãªã§ãã Clojure-Lispå
šè¬ã®èŠãç®ãå€ãã®èšèªæ§æèŠçŽ ã¯ãããããJAVAãã©ãããã©ãŒã äžã§ã®äŸ¿å©ãªéçºã®ããã«åèãããŸããã 圌ãããã©ãŒã©ã ã§æžããŠããããã«ãClujureã§ã®éçºã¯JAVAãããçç£çã§è峿·±ããã®ã§ãã ç¬åŠã®ããã ãã«ãç§ã¯ããŸããŸãªæ¹èšãšãã®å®è£
ãå³ãã£ãã SchemeãšCommon Lispãç¡æéã«è°è«ããããšãã§ããŸãããç§ã«ãšã£ãŠã¯ãããŸããŸãªãã©ãããã©ãŒã ã§ã®å®è£
ã®ç°¡æœæ§ãçŸä»£æ§ãããã³ã¢ã¯ã»ã·ããªãã£ã®ããã«ãSchemeãéžæããŸããã
Schemeã«ã€ããŠã®ã¬ãã¥ãŒã¯ãã¢ã«ãããã¯ãªèšèªã§ãããã®ããã«ãã©ãŒã©ã ã§ç¢ºèªã§ããŸããå®éã«äœ¿çšã§ããå Žåãé床ã®ããããªãºã ã®ããã«éåžžã«äžäŸ¿ã§ãã äœããç§ã«èšã£ããããã§ã¯ãªãã ãããŠä»ãç§ã®èŠªæãªãèªè
ãç§ã¯ãã®ã¹ããŒã ãããªãæè»ãªããã°ã©ãã³ã°èšèªã¯ãunningãªãã¶ã€ã³ã§ãªãŒããŒããŒããããŠããããå€ãã®äººæ°ã®ããããŒã«ãšããŸãç«¶äºã§ããããšãã話ãããŸãã ãããŠãçµã¿èŸŒã¿èšèªãšããŠäœ¿çšããããšã¯åã³ã§ãã Schemeæšæºã®çžå¯ŸçãªåçŽãã¯ãä»ã®å€ãã®å®è£
ã®æã«æž¡ã£ãŠããŸãã å®éãããããããŒãºã«å¯Ÿå¿ããå®è£
ãéžæããSchemeãã¡ã€ã³èšèªãšããŠäœ¿çšããŠæ¬æ ŒçãªGUIãDBãWEBã¢ããªã±ãŒã·ã§ã³ãéçºã§ããŸãã
ããããã®éžæè¢ããããŸã
奜å¥å¿isçã§ãããå€ãã®å Žåãæã人æ°ã®ãã補åã¯å®éã«ã¯éžæè¢ãæäŸããŸãããããã«ããã®ã¯ããªãã ãã®ãŠããŒã¯ãªããŒãžã§ã³ã§ãã
Schemeã¯ãããããæšæºã®åçŽãã®ããã«ãã€ã³ã¿ãŒããªã¿ãŒãŸãã¯ã³ã³ãã€ã©ãŒããããã¯ãã®äž¡æ¹ã®å®è£
ã倿°æã£ãŠããŸãã ããã«ãä»ã®èšèªã®ã³ã³ãã€ã©ããããå Žåã«ãã£ãŠã¯éåžžã«äŸ¿å©ã§ãã
æ¢ç¥ã®å®è£
ã®ãªã¹ãã¯ãããäžã§èŠã€ããããšãã§ããŸããäŸãã°ã衚ã¯
community.schemewiki.orgã§å
¬éãããŠã
ãŸã ã
æ¢ç¥ã®ã¹ããŒã ã®å®è£
ãŸãã
GitHubã§åŸ¹åºçã«æ€çŽ¢ãããšãããã«å€ãã®ãªãã·ã§ã³ãããããšãæããã«ãªããŸãã
ããŸããŸãªå®è£
ã§æšæºã«åŸãããšã§ãWebããã°ã©ãã³ã°ãå«ãããŸããŸãªãã©ãããã©ãŒã ã§ã³ãŒããåå©çšã§ããŸãã ãã ããæšæºã®äžéšã§ã¯ãªãæ©èœã¯ç°ãªãå¯èœæ§ããããã³ãŒãã®ç§»æ€æ§ã«ã€ãªããããšãå¿ããªãã§ãã ããã
éå±ã§
ç§ã®ç·Žç¿ã§ã¯ã.NETã®ããã°ã©ãã³ã°ã«ééããããšããããããŸãã ãããã£ãŠã.NETã©ã€ãã©ãªã䜿çšããŠãSchemeã€ã³ã¿ãŒããªã¿ãŒãã¢ããªã±ãŒã·ã§ã³ã«åã蟌ãããšãã§ãããœãªã¥ãŒã·ã§ã³ã¯ãç§ã«ãšã£ãŠæãæçšã§ãã ããŸããŸãªãªãã·ã§ã³ã§éãã åŸã
IronSchemeã«æ±ºããŸãã ã ãã®ãããäžèŠãããšãããã©ã®ããã«.NETã®R6Rsæšæºã®æãé«åºŠãªå®è£
ã«èŠããŸããã ããããå°æ¥ã®èšäºã§æžãããŠããä»ã®ãã®ããããŸãã
IronSchemeã¯ãR6Ræšæºã®6çªç®ã®ããŒãžã§ã³ãå®è£
ããŠããŸãã åœç¶ãclrã©ã³ã¿ã€ã ãšå¯Ÿè©±ããããã®æ©èœãçµã¿èŸŒãŸããŠããŸãã ãããã£ãŠãSchemeã¹ã¯ãªããããçŽæ¥.NETã¯ã©ã¹ãäœæããã³æäœã§ããŸãã ãããŠãããã¯ãã§ã«ãGUIãDBãããã³.NETããå
¥æã§ãããã®ä»ã®æ©èœãåããæ¬æ Œçãªã¢ããªã±ãŒã·ã§ã³ãäœæããã®ã«ååã§ãã ãã ããIronSchemeã§å®å
šãªããã°ã©ã ãäœæããå¿
èŠã¯ãããŸããã ããã«ãæäŸãããã©ã€ãã©ãªã«ã¯ãå°æ°ã®æšæº.NETã¯ã©ã¹ã®ã©ãããŒããããŸãã 誰ãç§ãã¡ãã³ãã¥ããã£ãæ¯æŽããã®ãæ¢ããŠããŸãããã
ç°å¢èšå®
- IronSchemeã®äœ¿çšãéå§ããã«ã¯ã ironscheme.codeplex.com /ããã¢ãŒã«ã€ããããŠã³ããŒãããŸãã
- ããšãã°ããProgram FilesïŒx86ïŒãã§è§£åããŸãã
- PATHç°å¢å€æ°ã«ãCïŒ\ Program FilesïŒx86ïŒ\ IronScheme \ãã远å ããŸãã
- 䟿å®äžãIronSchemeã®ãã£ã¬ã¯ããªã«ããIronScheme.Console-v4.exeïŒ
1ãã®å
容ãæã€ãã¡ã€ã«ãis.batããäœæããŸãã
- IronScheme.Console-v4.exeã³ãã³ããå®è¡ããŠãREPLã¢ãŒãã§ã€ã³ã¿ãŒããªã¿ãŒãå®è¡ããŸãã
ããã§ãããšãã°ãïŒ+ 2 2ïŒããªã©ã®ã³ãã³ããå
¥åã§ããŸãã REPLã¢ãŒãã®ã€ã³ã¿ãŒããªã¿ãŒã¯ãTABãæŒãããšã§èªåè£å®ããµããŒãããŸããããã¯ãåç
§ã³ãã³ããšããŠäœ¿çšããããã³ãŒãã®æçããã§ãã¯ãããããã®ã«äŸ¿å©ã§ãã ã€ã³ã¿ãŒããªã¿ãŒãçµäºããã«ã¯ããïŒexitïŒããšå
¥åããŸãã
ããã«ã¡ã¯äžçïŒ
äŒçµ±ã«ãããHello worldã¢ããªã±ãŒã·ã§ã³ãäœæããŠèµ·åããŸãã
Sublimeãªã©ãSchemeããµããŒãããããšãæãŸããã䜿ãæ
£ããããã¹ããšãã£ã¿ã§ãã¡ã€ã«ãäœæããhello-world.ssã«ä¿åããŸãã
hello-world.ssãã¡ã€ã«ã®å
容ïŒ
(import (rnrs) (ironscheme) ) (displayln "Hello, world!")
ãIronScheme.Console-v4.exe hello-world.ssãã³ãã³ããéå§ããåŸ
æã®ç¢æãååŸããŸãã