1.çŽç²ãªé¢æ°åèšèªã§ã¯ãå¹æçãªç¡ç§©åºãªèŸæžãšã»ããã¯ãããŸãã
90幎代以æ¥ãéçºã§ã®èŸæžã®äœ¿çšã¯ãã¹ãŠã®èšé²ãç ŽããŸããã èŸæžã¯çŸåšããã¹ãŠã®éçºè ãæšæºã©ã€ãã©ãªã§èŠã€ããããšãæåŸ ããŠããæšæºã³ã¬ã¯ã·ã§ã³ã§ãã
æå㪠岡åŽã®ã¢ãã°ã©ãã«èŠããããããªçŽç²ã«æ©èœçãŸãã¯æ°žç¶çãªããŒã¿æ§é ã¯ãåªããããŒã«ã§ãã ç¹ã«ãããããæäŸããæ°žç¶æ§ã¯ãã³ã¬ã¯ã·ã§ã³ã®å€æŽæ¹æ³ãæ°ã«ããã«ã³ã¬ã¯ã·ã§ã³ã®å€ãããŒãžã§ã³ã«ã¢ã¯ã»ã¹ã§ããããšãæå³ããŸãã å€ãã®å ŽåïŒç¹ã«ãè«çããã°ã©ãã³ã°ãã³ã³ãã€ã©ãŒã®äœæãªã©ã®ã¿ã¹ã¯ïŒãããã«ãããå€æŽãç°¡åã«è¿œè·¡ã§ãããããææ決å®ãããçãç°¡åã«ãªããŸãã ããããæ°žç¶åã®ããã«ã¯ãããã©ãŒãã³ã¹ã®èŠ³ç¹ãã倧ããªä»£åãæããªããã°ãªããŸããïŒçŽç²ã«æ©èœããèŸæžã¯éåžžãé©åã«å®è£ ãããããã·ã¥ããŒãã«ãããçŽ10åé ããéãã40åã«éããã±ãŒã¹ãèŠãŠããŸããã äžéšã®ã¢ããªã±ãŒã·ã§ã³ã§ã¯ãããã¯éåžžã«é ãã§ãã
ããã«ãã»ãšãã©ã®é¢æ°åèšèªïŒOCamlãHaskellãScalaïŒã¯ã å ·äœåããã ãžã§ããªã㯠ãå€åãããã³ã¬ããŒãžã³ã¬ã¯ã¿ãŒã®ã¯ã€ãã¯ã©ã€ãããªã¢ã®ãã©ãŒãªçµã¿åããããªããããé«éã§å¯å€ã®ãžã§ããªãã¯ããã·ã¥ããŒãã«ãè¡šçŸã§ããŸããã
泚æïŒ Haskellã®çŽç²ã«æ©èœããèŸæžã¯é«éã§ãããšäž»åŒµããããšããŠãã人ã ã«æ³šæããŠãã ããã åãHaskellã®å¯å€ããã·ã¥ããŒãã«ãšæ¯èŒããŸã ã ãã®æ¯èŒããã®æ£ããçµè«ã¯ãHaskellã®å¯å€ããã·ã¥ããŒãã«ãé ããšããããšã§ãã
2.çŽç²ã«æ©èœãã匱ãããã·ã¥ããŒãã«ã¯ãããŸããã
åœä»€åã¬ããŒãžã³ã¬ã¯ã·ã§ã³èšèªã§ã¯ãããŒããšã°ã©ãã®ãšããžéã®é¢ä¿ã¯ã 匱ãããã·ã¥ããŒãã«ã䜿çšããŠè¡šçŸã§ããŸãã ã¬ããŒãžã³ã¬ã¯ã¿ãŒã¯ãå°éäžèœãªãµãã°ã©ããåéããŸãã çŽç²ã«é¢æ°åã®åŒ±ãããã·ã¥ããŒãã«ããªããããçŽç²ãªé¢æ°åèšèªã§ã¯ãã¬ããŒãžã³ã¬ã¯ã·ã§ã³ãèšè¿°ããå¿ èŠããããŸãïŒ ãããããTranslããæã§å°éã§ããªãéšåã°ã©ããåé€ãããšããæå³ã§ïŒã
ãã ããã»ãšãã©ã®éçºè ã匱ãããã·ã¥ããŒãã«ã䜿çšããããšããªããããããã¯æãæ·±å»ãªæ¬ ç¹ã§ã¯ãããŸãã...
3.çŽç²ã«æ©èœçãªã¹ã¬ããã»ãŒãã³ã¬ã¯ã·ã§ã³ã¯ãããŸããã
å®çŸ©äžãäžå€ã®ã³ã¬ã¯ã·ã§ã³ã¯ãã¹ã¬ããã»ãŒããªã©ã®å¯å€æ§ããµããŒãã§ããŸããã ãããã£ãŠãå ±æã®å¯å€ã³ã¬ã¯ã·ã§ã³ïŒã¡ã¢ãªå ããŒã¿ããŒã¹ãªã©ïŒãå¿ èŠãªå ŽåãçŽç²ã«æ©èœçãªãœãªã¥ãŒã·ã§ã³ã¯ååšããŸããã
4.ã»ãšãã©ã®ã°ã©ãã¢ã«ãŽãªãºã ã¯ãæ©èœçãªã¹ã¿ã€ã«ã§èšè¿°ãããŠããå Žåãå€èŠ³ãæªããåäœãã¯ããã«é
ããªããŸãã
é¢æ°åããã°ã©ãã³ã°ã¯ããã€ãã®ã¿ã€ãã®ã¿ã¹ã¯ã«æé©ãªããŒã«ã§ãããç§ã®èŠ³å¯ã«ãããšãã°ã©ãã¢ã«ãŽãªãºã ã¯ãã³ãŒãã®ã·ã³ãã«ããšããã©ãŒãã³ã¹ã®äž¡æ¹ã®ç¹ã§çŽç²ã«é¢æ°åã®ãœãªã¥ãŒã·ã§ã³ããã°ãã°æªãå Žæã§ãã
Pythonã®12è¡ã® Primã¢ã«ãŽãªãºã ãšHaskellã®20è¡ã® Primã¢ã«ãŽãªãºã ãæ¯èŒããŠãã ããã å®éãHaskellãã©ã€ãã©ãªã§Primã¢ã«ãŽãªãºã ã䜿çšããã®ã¯ãªãã§ããïŒ ãããããKruskalã®ã¢ã«ãŽãªãºã ã¯ã union disjoint set system ãïŒ union-findã³ã¬ã¯ã·ã§ã³ ãå¥åDisjoint-setããŒã¿æ§é ïŒã®ããŒã¿æ§é ã«åºã¥ããŠãããã ãé¢æ°åèšèªã§ã¯å¹ççãªå®è£ ããããŸããã
5.åŸæ¥ã®åœä»€åããŒã¿æ§é ãšã¢ã«ãŽãªãºã ã®æ
£æ§ã¯å·šå€§ã§ã
ã°ã©ãã¢ã«ãŽãªãºã ã«å ããŠã65幎ã®ç§åŠæç®ãã»ãŒå®å šã«åœä»€åãœãªã¥ãŒã·ã§ã³ã«çŠç¹ãåœãŠãŠããã³ã³ãã¥ãŒã¿ãŒãµã€ãšã³ã¹ã®åéãæ°å€ããããŸãã ãã®çµæãåœä»€åèšèªã®ããã°ã©ããŒã¯å·šäººã®è©ã®äžã«ç«ã¡ ããããã®éçºã掻çšã§ããŸãããé¢æ°åèšèªã®ããã°ã©ããŒã¯å€ãã®å ŽåãŒãããå§ããå¿ èŠããããŸãã çµå±ãã»ãã®æ°å¹Žåã«Haskellã§ã®ã¡ã¢åã¯å士å·ã®å¯Ÿè±¡ã§ããã
ç§ã¯ãã€ãŠãæ°äººã®Haskellããã°ã©ããŒïŒããã³ãã®èšèªã§åŠäœè«æãæã£ãŠãã人ãããŸãïŒãå¹æçãªäžŠåã¯ã€ãã¯ãœãŒããæžãããšãææ¡ããŸãã ã
6.çµå±ã®ãšãããé¢æ°åèšèªã®ãã¹ãŠã®æ¢åã®å®è£
ïŒçŽç²ãªãã®ãšäžçŽãªãã®ã®äž¡æ¹ïŒã¯ã倧éã®ã¡ã¢ãªãå²ãåœãŠãããã«èšèšãããŠããŸãã
1960幎é ãããã«ãŒã·ãŒã¯LispãçºæããŸããã äž»ãªããŒã¿æ§é ã¯ãåäžãªã³ã¯ãªã¹ãã§ãã åãªã¹ãé ç®ã¯ãããŒãäžã§åå¥ã«å²ãåœãŠãããŸããã çŸä»£ã®ãã¹ãŠã®é¢æ°åèšèªã¯ããã®èãããçºå±ããŸããã 70幎代ãSchemeã¯æ¬è³ªçã«LispãšåãããŒã¿è¡šç€ºæŠç¥ã䜿çšããŠããŸããã 80幎代ã«ã¯ãSMLã¯èšèªã«ã¿ãã«ãå«ãŸãããããã¢ã³ãããã¯åãå°ãè¿œå ããã¡ã¢ãªãããã¯å šäœãšããŠããŒãã«å²ãåœãŠãŸããã 90幎代ãOCamlã¯èšèªã«å®æ°ã®ã¢ã³ããã¯ãããé åãå«ãŸããŠãããããããå°ãã¢ã³ããã¯ãè¿œå ããŸããã Haskellã¯ãç¹å®ã®ããŒã¿åãã¢ã³ããã¯ããæ©èœãè¿œå ããŸããã ããããçŸåšãŸã§ã«ãããã©ã«ãã§ã¢ã³ããã¯ãããé¢æ°èšèªã¯ãããŸããïŒ ãããTranslãã©ããããèè ã¯äœããã®çç±ã§ãã¹ã¿ãã¯ã«ããã©ã«ãã§é 眮ãããã¿ãã«ããšãããã®æ¹æ³ãéžæããŸããïŒã ä»»æã®å€ã¿ã€ããäœæã§ãã.NetããŒã¹ã®FïŒã§ãããããã¯ããã.Netã¿ãã«ã䜿çšããŸãã ãã®çµæãçŸä»£ã®ãã¹ãŠã®é¢æ°åèšèªã¯ãããŒããé »ç¹ã«å²ãåœãŠãå¿ èŠããªããããŒãäžã§ã¡ã¢ãªãé »ç¹ã«å²ãåœãŠããšããè² æ ãè² ããŸãã ãã®çµæãå¿ èŠä»¥äžã«ã¬ããŒãžã³ã¬ã¯ã¿ãããŒãããŸãã ããã¯æ·±å»ãªåé¡ã§ããã·ã³ã°ã«ã¹ã¬ããã³ãŒããé ããªãã ãã§ãªããã¬ããŒãžã³ã¬ã¯ã¿ãå ±æãªãœãŒã¹ã§ããããã®çµæãã¬ããŒãžã³ã¬ã¯ã¿ã®è² è·ã䞊åããã°ã©ã ã®ã¹ã±ãŒã©ããªãã£ãäœäžãããããã§ãã
ãæ¬ é¥ããªã©ã®åäœã®å®£èšã¯è°è«ã®äœå°ãããããšã«æ³šæããŠãã ããã OCamlã³ãã¥ããã£ã®Xavier Leroyã¯ã Coqã®å®çãèªåçã«èšŒæããç°å¢ã§OCamlã®åªããããã©ãŒãã³ã¹ã®åºç€ãšãªããããLispã€ã¡ãŒãžã§OCamlã®ããŒã¿ãæ瀺ããããšã¯å©ç¹ã§ãããšèããŠããŸãã ã¶ããšã«ã¯ ããã·ã³ããªãã¯ã³ã³ãã¥ãŒãã£ã³ã°ã«å¯ŸããOcamlã®æŠç¥ã¯æé©ã«è¿ãã ãšè¿°ã¹ãŠããŸãã é¢æ°åèšèªã¯ãåœä»€åã³ã¬ã¯ã·ã§ã³ã®ããã©ãŒãã³ã¹ãäœããããé«ããã©ãŒãã³ã¹ã®çŽç²ã«æ©èœçãªã³ã¬ã¯ã·ã§ã³åãã«æé©åãããããšããããããŸãã åœä»€åã³ã¬ã¯ã·ã§ã³ã¯ã»ãšãã©é«éã§ãããããã»ãšãã©ãã¹ãŠã®é¢æ°åèšèªã§ããã©ãŒãã³ã¹ã®äžéã人çºçã«äœããªããŸãã
7.çŽç²ãªé¢æ°åããã°ã©ãã³ã°ã¯çè«çã«ã¯äžŠè¡æ§ã«ã¯é©ããŠããŸãããå®éã®ããã©ãŒãã³ã¹ã®ç¹ã§ã¯ããŸãè¯ããããŸãããå®éã®é«ãããã©ãŒãã³ã¹ãå¯äžã®äžŠè¡æ§ã®åé¡ã§ãã
çŸåšã䞊åããã°ã©ã ãäœæããçç±ã¯2ã€ãããŸãã 1ã€ã¯ã客芳çã«è¿ éãªææ決å®ãæžãããšã§ãã 2ã€ç®ã¯ãããã»ã©é ããªã決å®ãããããšã§ãã ã»ãšãã©ã®å Žåãé¢æ°åèšèªã§ã®äžŠåããã°ã©ãã³ã°ã¯2çªç®ã®çç±ã®ããªãšãŒã·ã§ã³ã§ãã é«æ§èœã³ã³ãã¥ãŒãã£ã³ã°ã®ç°å¢ãã€ãŸãã¹ãŒããŒã³ã³ãã¥ãŒã¿ãŒã§ã¯ãæ©èœã³ãŒããçŽæ¥å®è¡ããªã人ã¯ã»ãšãã©ããŸããã é¢æ°åèšèªã®éçºè ãããââã°ã©ã ã䞊ååããå Žåãã»ãšãã©ã®å Žåãåªãã絶察çãªããã©ãŒãã³ã¹ãéæããããã«ãããè¡ãã®ã§ã¯ãªããé床ãåäžãããŸãã
Haskellã®ãããªçŽç²ãªé¢æ°åèšèªã¯ãããã°ã©ãããã¡ã¢ãªãšæéãé ãããã«èšèšãããŠããŸãã ããã¯ããã°ã©ããŒã«ããã°ã©ã ã®é³¥ç°å³ãæäŸããŸãããHaskellããã°ã©ã ãæ¶è²»ããã¡ã¢ãªã®éãšãçµæãåŸããããŸã§ã«å®è¡ã«èŠããæéãèŠç©ããããšã¯éåžžã«å°é£ã§ãã 䞊åããã°ã©ãã³ã°ã§ã¯ã䞊ååã«ããã²ã€ã³ã䞊åã³ãŒãå®è¡ã®ç®¡çãªãŒããŒããããäžåãããšãåžžã«ç¢ºèªããããšãéåžžã«éèŠã§ãã Haskellã§ã¯ãããã¯éåžžã«å°é£ã§ãã å®éãHaskellã®äžŠåå®è¡ã«é¢ããå ¬éãããç 究ã§ã¯ã䞊å床ã®çµæãéåžžã«éžæçã«æäŸãããããããã©ãŒãã³ã¹ãæ倧åã§ããŸããããã®çšåºŠã¯ãããã°ã©ã ãäœåºŠãå®è¡ããããšãªãäºåã«äºæž¬ããããšã¯ã§ããŸããã ç§ã®çµéšã§ã¯ãC ++ãªã©ã®èšèªã§ã¯ ãããã©ãŒãã³ã¹ãäºæž¬ã§ããªãHaskellãšã¯ç°ãªã ãæãæšæºçãªæ¹æ³ã§äžŠååãããšäºæž¬å¯èœãªé床åäžãåŸãããããšããããããŸã ã
泚æïŒ çµ¶å¯Ÿçãªããã©ãŒãã³ã¹ã«é¢ä¿ãªããããã°ã©ã ã®ã¹ã±ãŒã©ããªãã£ã«ã€ããŠè©±ã人ã ã«æ³šæããŠãã ããã ã»ãšãã©ã®èšç®ã¯ä¿¡ããããªãã»ã©ã®äžŠåã³ãŒãã§è¡ããããããã³ãŒãã®åè¡ã®åŸã«ç¡æå³ã«ãã³ãã«ããéåãèšç®ããããšã«ãããã»ãšãã©ãã¹ãŠã®äžŠåããã°ã©ã ã®ã¹ã±ãŒã©ããªãã£ãæ¹åã§ããŸãã ã¹ã±ãŒã©ããªãã£ã¯å¿ èŠã§ãããååãªæ¡ä»¶ã§ã¯ãããŸããã 絶察çãªããã©ãŒãã³ã¹ãå¿ ã確èªããå¿ èŠããããŸãã
8.ã³ãã¥ããã£ã§ã®æšªæãªã¹ãããã®æ¿åºŠããé¢æ°åããã°ã©ãã³ã°ã«é¢ããæçšãªçããåŸãããšãã§ããçšåºŠãŸã§åžéããã®ã«50幎ããããŸãã
ç§ã¯20幎以äžã«ããã£ãŠé¢æ°åããã°ã©ãã³ã°ã«æºãã£ãŠããŸããã äœå幎ãã®éãé¢æ°åèšèªã®ããã°ã©ããŒãšå®éã®åé¡ã解決ããããã°ã©ããŒã®éã«ã¯ã瀟äŒçãªæ Œå·®ããããŸããã ç¥ã«æè¬ããŸãããã®åé¡ã¯ãScalaãClojureãFïŒãªã©ã®é¢æ°åèšèªãå®éã®ã¿ã¹ã¯ã«äœ¿çšãããããã«ãªãã解決ããå§ããŸããã ããããé·å¹Žã«ããã£ãŠé¢æ°åããã°ã©ãã³ã°ã³ãã¥ããã£ãæ¯é ããŠããã®ã¯æ ¢ãªã¹ãããã§ãããå®éã®åé¡ã«å¯Ÿããå®éã®è§£æ±ºçãåŸãããšã¯éåžžã«å°é£ã§ããã ãã®çç±ã¯ãå€ãã®ã³ãã¥ããã£ãïŒæ°å幎ã«ããã£ãŠLispãïŒæ°ã¥ããã«èªåã®ããã€ã¹ã«ä»»ããèšèªïŒLispïŒããªãåªããŠããã®ãã«ã€ããŠéåžžã«ïŒãããééã£ãïŒè°è«ãå±éããŠããããã§ãã ãããã®è°è«ã®äœãééã£ãŠããã®ããç解ããã®ã«äœå¹ŽãããããŸããã
9.é¢æ°åããã°ã©ãã³ã°ã«ã€ããŠå€ãã®èª€ã£ãæ
å ±ãæµéããŠããŸãã
Haskell ã§ããã·ã¥ããŒãã«ã®ããã©ãŒãã³ã¹ãæ¹å€ããå ŽåïŒæè¿ã®æ¹å€ã¯ãã¡ã ïŒãã³ãã¥ããã£ã®èå人ãã絶察ã«ã¯ã€ã«ããªãã³ããåŸãããšãã§ããŸããããšãã°ãã¬ããŒãžã³ã¬ã¯ã·ã§ã³ããªãã«ããããã«æåéãã¢ããã€ã¹ããããšãã§ããŸãã
é·ãéãé¢æ°åããã°ã©ãã³ã°ã®ã³ãã¥ããã£ã¯ããšã©ãã¹ããã¹ãšã¯ã€ãã¯ãœãŒãã®ãµããã¢ã«ãŽãªãºã ã®éåžžã«çãå®è£ ã«ã·ã§ãã¯ãåããŠããŸããã 圌ãã¯äœå¹ŽãåŠçã«æããããŠããŸããã ãããŠäœå¹Žããã£ãŠããããããã®å®è£ ã¯å ã®ã¢ã«ãŽãªãºã ã«å¯Ÿå¿ããŠããªããšããç解ãçãŸããŸããã ã¡ãªããµã»ãªããŒã«ã¯ããã¹ã±ã«ã«ãããšã©ãã¹ããã¹ã®ãµãããä¿®æ£ããç§åŠè«æãåºçããŸããã ç¹ã«ãå®éã®ãµããã«ã¯ããšã©ãŒã®ããå ã®ããŒãžã§ã³ã®100åã®ã³ãŒããå¿ èŠã§ãã Haskellã¯åã¯ã€ãã¯ãœãŒãåŒã³åºãã§ãªã¹ãã®æ·±ãã³ããŒãäœæããå ã®Hoarã¢ã«ãŽãªãºã ã®æŒžè¿çãªè€éããæãªããããHaskellã®ããšã¬ã¬ã³ããªã2è¡ããŒãžã§ã³ãCã®SajwickããŒãžã§ã³ããã1000åé ãã¯ã€ãã¯ãœãŒãã«ãåãããšãåœãŠã¯ãŸããŸãã ã
Haskellã®æ¥çããŒãžã®è©³çŽ°ã«ã€ããŠã¯ã ã æ¥çã§HaskellãããŸã䜿çšãããªãçç± ããåç §ããŠãã ããã
èè ããïŒç§ã¯ãã€ããHaskellãæ¥çã§ããŸã䜿çšãããŠããªãçç±ããšããèšäºã翻蚳ããããšæã£ãŠããŸããHaskellãéå»5幎éæ¥çã§åºã䜿çšãããŠãããšããæèŠã«åè«ããããšããŠããããã§ã ããããïŒè±èªã®ãªãªãžãã«ããŒãžã§ã³ã®ã³ã¡ã³ãããå€æãããšïŒããã¯ããã»ã©ç°¡åã§ã¯ãªããèè èªèº«ãããã€ãã®å Žæã§èªåŒµããŠããããã«èŠããããšã«æ³šæãã¹ãã§ãã