1. Haskelãšã¯ïŒ
Haskellã¯ãé«åºŠãªçŽç²é¢æ°åããã°ã©ãã³ã°èšèªã§ããä»ã®ãã©ãã€ã ãšæ¯èŒããŠãæ°åŠçã§å®£èšçãªã¢ãããŒããæäŸããŸããããã«ãããã³ãŒããç°¡æœã§ç解ãããããå¹ççãªãã¹ããšåå©çšãå¯èœãšãªããŸãã
ãŸããHaskellã¯éçåä»ããæã€èšèªã§ããããã¯ãéçºè ãããã°ã©ã ã®æ§è³ªããã確ãã«ç解ã§ããããã«ããããã§ãããã®æ§è³ªã«ãããã³ãŒãã®ãšã©ãŒãäžæŽåæ§ãæ©æã«æ€åºããããšãå¯èœãšãªããŸãã
Haskellã¯ãäžåºŠã«ãäžã€ã®ããšããäžçªè¯ãæ¹æ³ã§ããšããå²åŠãæã£ãŠããŸããããã«ãããéçºè ã¯æ¥µããŠé«å質ãªã³ãŒããæžãããšãå¯èœãšãªããŸãã
1.1 Haskelã®åºæ¬çãªç¹åŸŽ
Haskellã¯ãæ¶æ°æ§ããæã€ãæ°å°ãªãèšèªã®äžã€ã§ããããã«ãããã³ãŒããããŒã¿æ§é ã®äžéšãå¿ èŠãªæã ãè©äŸ¡ããããã以å€ã®å Žåã¯è©äŸ¡ãããŸããããã®ç¹æ§ã«ãããHaskellã¯å¹ççãªãã®ãžãšé²åããŠããŸãã
ãŸããHaskellã¯ãåã¯ã©ã¹ããå°å ¥ããŠããŸããããã«ãããåã«æ¯ãèããå®çŸ©ã§ããŸããããã¯ãä»ã®èšèªã®ã€ã³ã¿ãŒãã§ãŒã¹ããããã³ã«ã®ãããªãã®ã§ããã®æ©èœã«ããHaskellã¯é«åºŠãªåæšè«ãšå é²çãªæœè±¡åãå¯èœã«ããŠããŸãã
ããã«ãHaskellã¯åŒ·åãªäžŠè¡æ§ãšäžŠåæ§ããµããŒãããŠãããããã«ããè€æ°ã®ã¿ã¹ã¯ãåæã«å¹çè¯ãåŠçã§ããŸãããããã®æ©èœã«ãããHaskellã¯å€§èŠæš¡ãªããŒã¿ãæ±ãé«æ§èœãªã¢ããªã±ãŒã·ã§ã³ã®éçºã«æé©ãªèšèªãšãªã£ãŠããŸãã
1.2 Haskelã®æŽå²
Haskellã¯1990幎ã«éå§ããããã®ååã¯æ°åŠè ãã¹ã±ã«ã»ã«ãªãŒã«ç±æ¥ããŠããŸããé¢æ°åããã°ã©ãã³ã°èšèªãšããŠã®åœŒã®è²¢ç®ã称ããããã«ããã®ååãéžã°ããŸããã
Haskellã®èšèšã¯ãçŽç²é¢æ°åããã°ã©ãã³ã°èšèªãç®æããŠå§ãŸããŸãããè€æ°ã®ç 究è ãçµç¹ããã®è²¢ç®ã«ãããç©æ¥µçã«éçºãé²ããããå€ãã®é©æ°çãªæ©èœãå°å ¥ãããŸããã
1998幎ã«çºè¡šããããHaskell 98ãã¯Haskellã®åã®æšæºããŒãžã§ã³ã§ããããã®åŸã®Haskellã®éçºã®åºç€ãšãªããŸããã2009幎ã®ãHaskell 2010ãã§ã¯æ°ããªèšèªæ©èœãå ããããã䜿ããããããã°ã©ãã³ã°èšèªãšããŠæé·ããŸããã
1.3 Haskelã®ã¡ãªãããšãã¡ãªãã
ã¡ãªããïŒäžèšã§è¿°ã¹ãããã«ãHaskellã¯ã³ãŒããæ確ã§åå©çšãããããå®å šæ§ãé«ããšããå©ç¹ããããŸãããŸãã匷åãªäžŠè¡åŠçãšäžŠååŠçæ©èœã«ããã倧èŠæš¡ãªããŒã¿ã®åŠçãå¯èœãšãªãã»ããçŽç²é¢æ°åãšããæ§è³ªã«ãããã°ã®çºçãå€§å¹ ã«æžããããšãå¯èœã§ãã
ãã¡ãªããïŒäžæ¹ã§ãHaskellã®åŠç¿æ²ç·ã¯ãããªãã«æ¥ã§ãããä»ã®èšèªããã®è»¢æã«ã¯ããªãã®æéãšãšãã«ã®ãŒãå¿ èŠãšããŸãããŸããçŽç²é¢æ°åèšèªã®ãããç¶æ 管çãå¯äœçšã®æ±ãã«æ £ãããŸã§ã«ã¯æéãæããããšããããŸãã
ãŸããåçšéçºã«ããã䜿çšäŸãæ¯èŒçå°ãªããããå ·äœçãªåé¡è§£æ±ºã®åç §äºäŸãä»ã®äžè¬çãªèšèªã«æ¯ã¹ãŠå°ãªããšãããã¡ãªããããããŸãã
1.4 Haskelã®äž»ãªçšé
Haskellã¯ç¹ã«ããŒã¿åæãæ©æ¢°åŠç¿ã䞊ååãšé«æ§èœã³ã³ãã¥ãŒãã£ã³ã°ãç 究ãæè²ãªã©ãå€ãã®åéã§äœ¿çšãããŠããŸãããŸããã³ã³ãã€ã©æ§ç¯ããœãããŠã§ã¢æ€èšŒãã¢ã«ãŽãªãºã èšèšåã³å®è£ çãçè«çãªã¿ã¹ã¯ã«ãéåžžã«é©ããŠããŸãã
Haskellã®åŒ·åãªåã·ã¹ãã ãšæ°åŠçãªè¡šçŸåã¯ãé«åºŠãªåé¡è§£æ±ºãè€éãªèšç®ã®è¡šçŸã«éåžžã«åœ¹ç«ã¡ãŸãããã®ãããããŒã¿é§ååã®ããžãã¹ãç§åŠç 究ã§ã¯å€§ãã«ãã®äŸ¡å€ãçºæ®ãããŸãã
ãŸããHaskellã¯ãã£ãŒãã©ãŒãã³ã°ãã¬ãŒã ã¯ãŒã¯ãã¯ãããšããå€æ§ãªã©ã€ãã©ãªããã¬ãŒã ã¯ãŒã¯ãšã®çžäºéçšæ§ãé«ãã®ã§ãã¢ããªã±ãŒã·ã§ã³ã®éçºã«ãå©çšã§ããŸããããã«ãããå®éã®ç£æ¥çã«ããã䜿çšäŸãå¢ããŠããŠããŸãã
2. Haskelãã¬ãŒã ã¯ãŒã¯ã®åºæ¬ç解
ä»åã¯ãæè¡è ããã¬ãŒã ã¯ãŒã¯ã«èå³ã®ããæ¹ã«åããŠãHaskelãã¬ãŒã ã¯ãŒã¯ã®åºæ¬ç解ã«ã€ããŠæ·±æãããŠãããŸããHaskelãã¬ãŒã ã¯ãŒã¯ã®åœ¹å²ãç¹åŸŽãå©çšããçç±ããããŠãã®çš®é¡ã«ã€ããŠè©³ããèŠãŠãããŸãããïŒ
2.1 ãã¬ãŒã ã¯ãŒã¯ã®åœ¹å²ãšã¯
ãã¬ãŒã ã¯ãŒã¯ãšã¯ãå¹ççã«ãœãããŠã§ã¢ãéçºããããã®ææ³ã§ããäžè¬çã«ããã¬ãŒã ã¯ãŒã¯ã¯ããã°ã©ã ã®åºæ¬çãªæ§é ãèšèšãã¿ãŒã³ã瀺ããŠãããŸããããã«ãããéçºè ã¯è€éãªããã°ã©ã ããŒãããã³ãŒãã£ã³ã°ããå¿ èŠãªããçŽ æ©ãå質ã®é«ããœãããŠã§ã¢ãéçºããããšãå¯èœã«ãªããŸãã
ãŸãããã¬ãŒã ã¯ãŒã¯ã¯ãããžã§ã¯ãå šäœã®åéåãé«ããã³ãŒãã®åå©çšãä¿é²ããŸãããã®åå©çšãå¯èœãªéšåãããããšã§éçºã¿ã¹ã¯ã®å¹çåãšã³ãŒãéã®åæžãèŠèŸŒããŸãã
ãã¬ãŒã ã¯ãŒã¯ã¯æ©èœãæ¡åŒµããããæ§é ã«ãªã£ãŠããããšãç¹åŸŽã§ããéçºè ã¯ç¹å®ã®éšåã ãã«ã¹ã¿ãã€ãºããŠãèªåã®ããŒãºã«åãããç¬èªã®ã¢ããªã±ãŒã·ã§ã³ããµãŒãã¹ãäœãããšãå¯èœã§ãã
2.2 Haskelãã¬ãŒã ã¯ãŒã¯ã®ç¹åŸŽ
Haskelãã¬ãŒã ã¯ãŒã¯ã¯ãHaskelèšèªã®ç¹æ§ãçãããããŸããŸãªç¹æ§ãæã£ãŠããŸããHaskelã¯çŽç²é¢æ°åèšèªã§ãå¯äœçšã®ãªãå®å šãªããã°ã©ã ãäœæããããšãå¯èœã§ãã
ãã®ç¹æ§ãçãããŠHaskelãã¬ãŒã ã¯ãŒã¯ã䜿çšããã°ãå®å šã§è¡šçŸåè±ããªã³ãŒããè¿ éã«æžãããšãã§ããŸãããŸãHaskelãã¬ãŒã ã¯ãŒã¯ã¯ãåãã§ãã¯ãšLazy EvaluationãšããHaskelã®åŒ·åãªç¹æ§ããµããŒãããŠããŸãã
ããã«ãHaskelãã¬ãŒã ã¯ãŒã¯ã®äžã«ã¯ãWebã¢ããªã±ãŒã·ã§ã³éçºã«ç¹åãããã®ãã䞊ååŠçãšäžŠè¡åŠçãæé©åãããã®ãšãã£ãç¹ååãã¬ãŒã ã¯ãŒã¯ãååšããŸãã
2.3 Haskelãã¬ãŒã ã¯ãŒã¯ãå©çšããçç±
Haskelãã¬ãŒã ã¯ãŒã¯ãå©çšããçç±ã¯ãããããããŸããããã®äžã§ãç¹ã«éèŠãªã®ã¯ãHaskelã®å³å¯ãªåã·ã¹ãã ããã«æŽ»çšããããšãã§ããç¹ã§ãã
Haskelã®åã·ã¹ãã ãçšããããšã§ãããã°ã©ã ã®å®å šæ§ãå€§å¹ ã«åäžãããããšãã§ããŸãããŸããåã匷åãªHaskelã§ã¯ãäºåã«å€ãã®ãšã©ãŒãæ€åºããããšãå¯èœã§ãã
ããªãã¡ãå®å šæ§ãšå ç¢æ§ã確ä¿ããäžæ¹ã§ãéçºããã»ã¹ãããã¹ã ãŒãºã«é²ããããšãã§ããŸããããããããHaskelãã¬ãŒã ã¯ãŒã¯ãå©çšããæ倧ã®çç±ãšèšããã§ãããã
2.4 Haskelãã¬ãŒã ã¯ãŒã¯ã®çš®é¡
Haskelãã¬ãŒã ã¯ãŒã¯ã¯å€çš®å€æ§ã§ãããã®äžããããã€ãããã¯ã¢ããããŠã玹ä»ããŸãããŸãYesodã¯ãå®å šæ§ãšé«éæ§ãéèŠãããŠã§ãã¢ããªã±ãŒã·ã§ã³ãã¬ãŒã ã¯ãŒã¯ã§ãã
ãŸãScottyã¯ã軜éã§ãšãŠãã·ã³ãã«ãªãã¬ãŒã ã¯ãŒã¯ãšããŠç¥ãããŠããŸããã·ã³ãã«ãªããããWebãµãŒãã¹ã®æ§ç¯ã«å¿ èŠãªèŠçŽ ã¯ãã¹ãŠæã£ãŠããŸãã
Snapã¯ãå®å šæ§ãšããã©ãŒãã³ã¹ãéèŠããããæ¬æ ŒçãªWebã¢ããªã±ãŒã·ã§ã³éçºã«å¯Ÿå¿ãããã¬ãŒã ã¯ãŒã¯ã§ãã以äžãããŸããŸãªHaskelãã¬ãŒã ã¯ãŒã¯ããããããžã§ã¯ãã®èŠä»¶ã«åãããŠéžã¶ããšãéèŠã§ãã
3. Haskelãã¬ãŒã ã¯ãŒã¯ã®å°å ¥æ¹æ³
Haskelãã¬ãŒã ã¯ãŒã¯ãå©çšããããã«ã¯ããŸãç°å¢ãæŽããå¿ èŠããããŸãããã®ã»ã¯ã·ã§ã³ã§ã¯ãéçºç°å¢ã®æ§ç¯ããå§ãããã¬ãŒã ã¯ãŒã¯ã®ã€ã³ã¹ããŒã«ãèšå®ããããžã§ã¯ãäœæãŸã§ã®æé ã詳ãã解説ããŸãã
3.1 éçºç°å¢ã®æ§ç¯
Haskelã®éçºç°å¢ãæ§ç¯ããã«ã¯ããŸãææ°çã®Haskelã³ã³ãã€ã©ãã€ã³ã¹ããŒã«ããŸããããã«ã¯ããHaskell Platformãã䜿çšããã®ãäžè¬çã§ããHaskell Platformã¯ãHaskeléçºã«å¿ èŠãªãœãããŠã§ã¢ã®ããã±ãŒãžã§ãææ°çã®GHCïŒHaskelã³ã³ãã€ã©ïŒãå«ãã§ããŸãã
次ã«ãããã¹ããšãã£ã¿ãéžæãã€ã³ã¹ããŒã«ããŸããHaskelã§ã¯ãVisual Studio Code, Atom, Sublime TextãšãããŸããŸãªãšãã£ã¿ã䜿ãããŠããŸããèªèº«ã®éçºç¿æ £ã«åã£ããšãã£ã¿ãéžã¶ããšãæé©ã§ãã
æåŸã«ãHaskelã®ããã±ãŒãžç®¡çããŒã«ã§ãããcabalããã€ã³ã¹ããŒã«ããŸãããcabalãã¯Haskelã®ã©ã€ãã©ãªãããŒã«ã®ã€ã³ã¹ããŒã«ãå©ããããã±ãŒãžãããŒãžã£ã§ãã
3.2 ãã¬ãŒã ã¯ãŒã¯ã®ã€ã³ã¹ããŒã«
次ã«ãHaskelã®ãã¬ãŒã ã¯ãŒã¯ã®ã€ã³ã¹ããŒã«ã§ããåžå Žã«ã¯ããã€ãã®ãã¬ãŒã ã¯ãŒã¯ãååšããŸããããã®ãã¡ã®äžã€ã§ãããYesodãã®ã€ã³ã¹ããŒã«æ¹æ³ã説æããŸãã
ãŸããã³ãã³ãããã³ãããŸãã¯ã¿ãŒããã«ãéãããcabalãã䜿çšããŠãYesodããã€ã³ã¹ããŒã«ããŸãããcabalãã¯ä»ã®ã©ã€ãã©ãªãšãšãã«ãyesod-binããšããããã±ãŒãžãã€ã³ã¹ããŒã«ããŸãã
ã€ã³ã¹ããŒã«ãçµãã£ããããyesod versionãã³ãã³ãã䜿ã£ãŠYesodã®ããŒãžã§ã³ã確èªããŸããããããã§ãã¬ãŒã ã¯ãŒã¯ã®ã€ã³ã¹ããŒã«ã¯å®äºã§ãã
3.3 ãã¬ãŒã ã¯ãŒã¯ã®èšå®
ãYesodãã®èšå®ã¯åºæ¬çã«ã¯èªååãããŠããŸããæ°ãããããžã§ã¯ããäœæããéã«ããã®èšå®ãæå®ããŸããèšå®ã¯ãããŒã¿ããŒã¹ã®çš®é¡ããã³ãã¬ãŒããšã³ãžã³ãã¹ã¿ã€ã«ã·ãŒãã®èšå®ãªã©ãæå®ããŸãã
èšå®ã¯ããã¹ããã¡ã€ã«ã§ç®¡çãããŠãããå¿ èŠã«å¿ããŠæåã§å€æŽããããšãå¯èœã§ããããã¹ããã¡ã€ã«ã¯ãœãŒã¹ã³ãŒããã£ã¬ã¯ããªã«æ ŒçŽãããŠããŸãã
ãªãããYesodãã¯å€æŽããã£ãéã«èªåçã«åã³ã³ãã€ã«ãããã©ãŠã¶ã«åæ ããŸããããã«ãããéçºè ã¯å€æŽãå³åº§ã«ç¢ºèªã§ããçç£æ§ã®åäžã«ã€ãªãããŸãã
3.4 ãããžã§ã¯ãã®äœæ
æåŸã«ããYesodãã䜿ã£ãŠæ°ãããããžã§ã¯ããäœæããŸãããyesod initãã³ãã³ãã䜿ã£ãŠãæ°ãããããžã§ã¯ãã®ãã³ãã¬ãŒããäœæããŸãã
ã³ãã³ããå®è¡ãããšãããã€ãã®è³ªåã«å¿ããããšã«ããããããžã§ã¯ãã®èšå®ãè¡ãããšãã§ããŸããããã«ã¯ããããžã§ã¯ãåãããŒã¿ããŒã¹ã®èšå®ããã³ãã¬ãŒããšã³ãžã³ã®éžæãªã©ãå«ãŸããŸãã
å šãŠã®èšå®ãçµãã£ããããyesod develãã³ãã³ããå®è¡ããŠãéçºãµãŒããŒãèµ·åããŸãããã©ãŠã¶ã§éçºãµãŒããŒã®URLã«ã¢ã¯ã»ã¹ãããšãäœæãããããžã§ã¯ãã®ããŒãžã衚瀺ãããŸãã
4. Haskelãã¬ãŒã ã¯ãŒã¯ã§ã®éçºå®è·µ
éçºè ãã¡ã®å€ãã«ãšã£ãŠãHaskellãã¬ãŒã ã¯ãŒã¯ã§ã®éçºã¯äžçš®ã®é©ãããã£ãŠè¿ããããããšã§ãããããã®çç±ã¯ãHaskellãæã€ãåŠçã®ãšã¬ã¬ã³ã¹ãåå®å šæ§ã䞊è¡æ§ãšäžŠè¡æ§ã®äž¡æ¹ãžã®å é²çãªã¢ãããŒãã§ããã§ã¯ãå ·äœçãªéçºå®è·µã§ããã¯ã©ã®ããã«æ©èœããã®ã§ããããã
ãããèŠãŠãããŸãããã
4.1 ã³ãŒãã£ã³ã°ã®æµã
Haskellã®ãã¬ãŒã ã¯ãŒã¯ã§ã¯ãç¬èªã®ãããŒãžãã©ã³ã¿ã€ã ãæäŸããé«åºŠãªåã·ã¹ãã ãšéçãªæ··åæ©èœããã«ã«æŽ»çšããŸããããã«ãããéçºè ã¯åçãªã©ã³ã¿ã€ã ãšã©ãŒããªãœãŒã¹ãªãŒã¯ãªã©ã®åé¡ã¯ã»ãšãã©æ°ã«ããå¿ èŠããããŸãããã³ãŒãã£ã³ã°ã®æµãã¯ãã¯ããã«ããŒã¿åãå®çŸ©ãããã®ããŒã¿åã«å¯Ÿããé¢æ°ãäœæããããšããå§ãŸããŸãã
å ·äœçãªã©ã€ãã©ãªããã¬ãŒã ã¯ãŒã¯ã®éžæã¯ãä»æ§ãã¹ã±ãŒã«ãéçºè ã®çµéšãªã©ã«ããç°ãªããŸããä»æ¥ãé«å¯çšæ§ãå¿ èŠãšããwebãµãŒãã¹ãã¢ããªã±ãŒã·ã§ã³éçºã®äžéšã§ã¯ãYesodãSnapãªã©ã䜿ãããŠããŸãã
ãã¹ãé§åéçº(TDD)ãæšå¥šãããŠããããã¡ããåå®å šæ§ã«ãã£ãŠå€§å¹ ã«å©ããããŸãããã¹ãã¯ãçæãããã³ãŒããæ£ç¡®ã«æ©èœããããšãä¿èšŒã§ãããããMetalãšããã©ã€ãã©ãªãçšããŠæžãããŸãã
4.2 ãã«ããŒãããã«ãŠã§ã¢ã®äœ¿çšäŸ
次ã«ããã«ããŒãããã«ãŠã§ã¢ã®å°å ¥åã³ãã®é©åãªäœ¿çšæ¹æ³ã説æããŸãããããã¯ãWebã¢ããªã±ãŒã·ã§ã³ã®éåžžã«éèŠãªæ©èœãæ ã£ãŠããŸãã
äŸãã°ãçµ±äžçãªãšã©ãŒãã³ããªã³ã°ããªã¯ãšã¹ããã°ãã»ãã·ã§ã³ç®¡çããªãã€ã¬ã¯ããèªèšŒãšãã£ãå ±éã®åŠçã¯ãã»ãŒãã¹ãŠã®Webã¢ããªã±ãŒã·ã§ã³ã§å¿ èŠãšãããã®ã§ããããããã¯ãã«ããŒã«ãã£ãŠæäŸãããŸãã
ãŸãããããã®åŠçãå®è£ ããããã«ã¯ãéåžžããã«ãŠã§ã¢ã䜿ãããŸããããã«ãŠã§ã¢ã¯ããªã¯ãšã¹ãã»ã¬ã¹ãã³ã¹ãµã€ã¯ã«ã®äžã§åäœãããªã¯ãšã¹ããšã¬ã¹ãã³ã¹ãæãããããã»ã¹ãã«ã¹ã¿ãã€ãºã§ããŸãã
4.3 ããŒã¿ããŒã¹ãšã®é£æºæ¹æ³
Haskellãã¬ãŒã ã¯ãŒã¯ãšããŒã¿ããŒã¹ãšã®é£æºã«ã€ããŠã§ãããäžè¬çã«äœ¿ãããSQLãšNoSQLã®äž¡æ¹ã®ããŒã¿ããŒã¹ãšã®é£æºãå¯èœã§ãã
Haskellã¯åå®å šæ§ãéèŠããã³ã³ãã€ã©ã¯å€ãã®ãšã©ãŒãã³ã³ãã€ã«æã«å®¹æã«æ€åºããŸããããã«ãããããŒã¿ããŒã¹ãšã®é£æºãåãšã©ãŒãçºçãããå¯èœæ§ã®ããåé¡ãæé€ããŸãã
äŸãã°ãPersistentãšããã©ã€ãã©ãªã¯ãHaskellãã¬ãŒã ã¯ãŒã¯ã®äžã§ããã䜿ãããã©ã€ãã©ãªã®äžã€ã§ãåå®å šãªSQLãå©çšããããšã§ããŒã¿ããŒã¹ãšã®é£æºãå¯èœã«ããŸãã
4.4 å¹ççãªãããã°æè¡
Haskellã§ã¯ãããã°ããŸããéçºã®äžå¿çãªéšåãšãªããŸãããã®ããã«ã¯ã匷åãªãããã°ããŒã«ãšå¹ççãªãããã°æè¡ãå¿ èŠã§ãã
ãããã°ã¯éåžžããGHCiãããHaskellãããã¬ããªã©ã®ããŒã«ã䜿ã£ãŠè¡ããŸãããããã¯å¯Ÿè©±çãªç°å¢ãæäŸããã³ãŒãã®éšåçãªå®è¡ãé¢æ°åŒã³åºãããã¹ãããã³ãŒãã®æåãææ¡ããã®ã«åœ¹ç«ã¡ãŸãã
ãŸããåå®å šãªèšèšã®ãããã§ãå€ãã®ãã°ã¯ã³ã³ãã€ã«æã«æ€åºå¯èœã§ããã€ãŸããå¹ççãªãããã°ã«ã¯ãåã®èšèšãšãã®äœ¿çšãããæã«ãããã£ãŠãããšèšããŸãã
5. Haskelãã¬ãŒã ã¯ãŒã¯ã®æé©ãªå©çšã·ãŒã³
Haskelãã¬ãŒã ã¯ãŒã¯ã¯ãã®é©æ°çãªæ©èœãšãã¯ãã«ãªããã©ãŒãã³ã¹ã«ãããæ§ã ãªã·ãŒã³ã§æ¥µããŠå¹æçã«å©çšããããšãã§ããŸãã以äžã§ã¯ããã®äžã§ãç¹ã«Haskelãã¬ãŒã ã¯ãŒã¯ãéç«ã€å©çšã·ãŒã³ãèŠãŠãããŸãã
æ¡ãäžããã·ãŒã³ã¯ãWebã¢ããªã±ãŒã·ã§ã³ã®éçºãããŒã¿åæãAIã»æ©æ¢°åŠç¿çšéãã·ã¹ãã ã»ã€ã³ãã©ã®éçºç®¡çããªã¢ã«ã¿ã€ã éä¿¡ãèŠæ±ãããããã¯ãã®4ã€ã§ãã
ãããã®ã·ãŒã³ã¯ãHaskelãã¬ãŒã ã¯ãŒã¯ã®ç¹åŸŽã§ããéçåä»ãã®å®å šæ§ãæè»ãªæœè±¡åãæ©èœè±å¯ãªã©ã€ãã©ãªãããã©ãŒãã³ã¹ã®é«ããæ倧éã«æŽ»ããããšãã§ããé åãšãªã£ãŠããŸãã
5.1 Webã¢ããªã±ãŒã·ã§ã³ã®éçº
Haskelãã¬ãŒã ã¯ãŒã¯ã¯ãWebã¢ããªã±ãŒã·ã§ã³ã®éçºã«éåžžã«é©ããŠããŸããããã¯ãHaskelãæäŸãã匷åãªåã·ã¹ãã ãšè±å¯ãªæ©èœããå®å šã§å¹ççãªã³ãŒãã£ã³ã°ãå¯èœã«ããããã§ãã
ãŸããããè€éãªWebã¢ããªã±ãŒã·ã§ã³ã§ã¯ãHaskelã®é«åºŠãªæœè±¡åæ©èœã倧èŠæš¡ãªã³ãŒãããŒã¹ã®ç®¡çã容æã«ããŸããããã«ãããé·æçãªã¡ã³ããã³ã¹æ§ãšä¿¡é Œæ§ã®åäžã«ç¹ãããŸãã
ãŸããHaskelã®æ§èœã®é«ãã¯ã倧éã®ãŠãŒã¶ãŒããªã¯ãšã¹ããåŠçãããããªWebãµãŒãã¹ã®ããã©ãŒãã³ã¹åäžã«å¯äžããŸãããã£ãŠãHaskelãã¬ãŒã ã¯ãŒã¯ã¯é«æ§èœãªWebã¢ããªã±ãŒã·ã§ã³ã®éçºã«ã¯æé©ã§ãã
5.2 ããŒã¿åæãAIã»æ©æ¢°åŠç¿çšé
ããŒã¿åæãAIã»æ©æ¢°åŠç¿ã®é åã§ããHaskelãã¬ãŒã ã¯ãŒã¯ã¯ãã®ãã¯ãŒãååã«çºæ®ããŸããåå®å šãªããã°ã©ãã³ã°èšèªãšããŠãHaskelã¯ãã°ã®å°ãªããä¿¡é Œæ§ã®é«ãã³ãŒããçã¿åºãããšãå¯èœã§ãã
ãŸããHaskelã®çŽç²é¢æ°åã®ç¹æ§ã¯äžŠååŠçã䞊ååŠçã«ããããšã©ãŒãã³ããªã³ã°ã容æã«ããŸããããã¯å€§éã®ããŒã¿ãæ±ãããŒã¿åæãAIã»æ©æ¢°åŠç¿ã®é åã«ãããŠéåžžã«éèŠãªç¹ã§ãã
ããã«ãHaskelã®ã©ã€ãã©ãªãšã³ã·ã¹ãã ã«ã¯ãç·åœ¢ä»£æ°ã確ççµ±èšãªã©ã®å€ãã®ããŒã¿ç§åŠé¢é£ã®ã©ã€ãã©ãªãååšããŸããããããå©çšããããšã§ãããŒã¿åæãAIã»æ©æ¢°åŠç¿ã®éçºãã¹ã ãŒãºã«é²ãã§ãããã
5.3 ã·ã¹ãã ã»ã€ã³ãã©ã®éçºç®¡ç
ã·ã¹ãã ãã€ã³ãã©ã®éçºã§ããHaskelãã¬ãŒã ã¯ãŒã¯ã¯åŒ·åãªããŒã«ãšãªãã§ããããHaskelã¯æœè±¡åã®åãæã¡åãããŠãããããè€éãªã·ã¹ãã ãã€ã³ãã©æ§ç¯ã«åããŠããŸãã
ãŸããHaskelã®å®å šãªåã·ã¹ãã ã¯ãé害çºçã®å¯èœæ§ãäœæžããŸãããã®ãããHaskelã䜿çšããããšã§ãããå®å®ããã·ã¹ãã ã»ã€ã³ãã©ã®éçºãšä¿å®ãå¯èœãšãªããŸãã
ããã«ããã«ãã¹ã¬ããã䞊ååŠçã®ãµããŒãã匷åãªãšã©ãŒãã³ããªã³ã°ã®æ©èœããããŸãããã®ãããªç¹æ§ã¯ã倧ããªã·ã¹ãã ããããã¯ãŒã¯ã®ç®¡çã«å¿ é ã®æ¡ä»¶ãšãªããŸãã
5.4 ãªã¢ã«ã¿ã€ã éä¿¡ãèŠæ±ãããããã¯ã
Haskelãã¬ãŒã ã¯ãŒã¯ã¯ãªã¢ã«ã¿ã€ã éä¿¡ãè¡ããããã¯ãã®éçºã«ãåãçºæ®ããŸããHaskelã®äžŠè¡æ§ãšäžŠåæ§ã¯ããªã¢ã«ã¿ã€ã ã§å€§éã®ããŒã¿ãæ±ãå¿ èŠãããã±ãŒã¹ã«å¯Ÿå¿ããèœåãæäŸããŸãã
ãã®ãããªã¢ããªã±ãŒã·ã§ã³ã§ã¯ãéåžžãé«ãã¹ã±ãŒã©ããªãã£ãšã¬ã¹ãã³ã·ããªæ§èœãæ±ããããŸããHaskelãã¬ãŒã ã¯ãŒã¯ã®ããã©ãŒãã³ã¹ãšæè»æ§ã¯ããããã®èŠæ±ãæºããããã®éèŠãªèŠçŽ ãšãªããŸãã
ãŸããHaskelã®çŽç²é¢æ°åãšéçåä»ãã®ç¹æ§ã¯ãããã°ã©ã ã®äºæž¬å¯èœæ§ãšä¿¡é Œæ§ãåäžããããªã¢ã«ã¿ã€ã éä¿¡ã¢ããªã±ãŒã·ã§ã³ã®å質ãä¿ã€ã®ã«è²¢ç®ããŸãã
6. Haskelãã¬ãŒã ã¯ãŒã¯ã®å°æ¥æ§
ãã®ç« ã§ã¯ãHaskelãã¬ãŒã ã¯ãŒã¯ã®å°æ¥æ§ã«ã€ããŠè©³ãã説æããŸããHaskelãã¬ãŒã ã¯ãŒã¯ã®çŸç¶ããã®ç«ã¡äœçœ®ãã³ãã¥ããã£ã®åœ±é¿ãå°æ¥ã®é²åããããŠãªããããåŠã¶ããšã䟡å€ããã®ãã詳现ã«æãäžããŠããŸãã
6.1 çŸç¶ã®Haskelãã¬ãŒã ã¯ãŒã¯ã®ç«ã¡äœçœ®
Haskelãã¬ãŒã ã¯ãŒã¯ã¯ããã®é«åºŠãªè¶åçæ©èœãšå®å šæ§ã«ãããäžéšã®æè¡è ãã¡ã«ãã£ãŠè©äŸ¡ãããŠããŸãã
ãããäžæ¹ã§ãHaskelãã¬ãŒã ã¯ãŒã¯ã¯åŠç¿æ²ç·ãä»ã®äžéšã®ãã¬ãŒã ã¯ãŒã¯ã«æ¯ã¹ãŠå³ãããšãããŠããããã®ç«ã¡äœçœ®ã¯ãŸã ç¬èªãªãã®ãšèšããã§ãããã
ãã®ããããŸãç¶æ³ãæ£ç¢ºã«ææ¡ããã©ã®ãããªäœçœ®ã¥ãã«ãªã£ãŠããã®ãç解ããããšãéèŠã§ãã
6.2 Haskelãã¬ãŒã ã¯ãŒã¯ã®çºå±ãæ¯ããã³ãã¥ããã£
Haskelã®æåãšæé·ã¯ããã®èåŸã«äœçœ®ãã掻çºãªã³ãã¥ããã£ã«ãã£ãŠåŒ·ãæ¯ããããŠããŸãã
ã³ãã¥ããã£ã®äžã®ã¡ã³ããŒã¯ãåé¡è§£æ±ºãæ°æ©èœã®ææ¡ãããã³ã³ãŒãã®æ¹åã«åãçµããªã©ããã¬ãŒã ã¯ãŒã¯ãç¶ç¶çã«çºå±ãããŠããŸãã
ãŸããæè²è³æºã®å å®ãå³ãããŠãããæ°èŠã®ãŠãŒã¶ãŒã§ã容æã«åŠç¿ãå§ããããšãã§ããç°å¢ãæŽåãããŠããŸãã
6.3 ãã¬ãŒã ã¯ãŒã¯ã®é²åãšãã®åœ±é¿
ãã¬ãŒã ã¯ãŒã¯ã®é²åã¯ãéçºè ã®ãããã¯ãã£ããã£ãåäžãããããã®æ°æ©èœãããŒã«ãçãŸãããã£ãããšãªããŸãã
Haskelãã¬ãŒã ã¯ãŒã¯ãäŸå€ã§ã¯ãªããæ°å€ãã®é©æ°çãªæ©èœãæäŸããŠéçºè ã®æç¶ããæ¹åããŠããŸãã
ãã®ãããªãã¬ãŒã ã¯ãŒã¯ã®é²åã¯ãéçºè ãããè€éãªåé¡ã«åãçµãã®ã«åœ¹ç«ã¡ãã³ãŒãã®å質ãåäžãããããšã«ãçŽçµããŸãã
6.4 Haskelãã¬ãŒã ã¯ãŒã¯ãåŠã¶ããšã®äŸ¡å€
Haskelãã¬ãŒã ã¯ãŒã¯ãåŠã¶ããšã¯ãé«åºŠãªæœè±¡åãç解ãããããçšããŠãšã¬ã¬ã³ããªãœãããŠã§ã¢ãæ§ç¯ããèœåãåäžãããŸãã
ãŸããHaskelãã¬ãŒã ã¯ãŒã¯ã¯ãä»ã®ãã¬ãŒã ã¯ãŒã¯ãæããªãäžéšã®ç¹æ§ãåããŠããããããå©çšããããšã§ãããå®å šã§å¹ççãªã³ãŒããæ§ç¯ããããšãå¯èœã«ãªããŸãã
ãããŠäœãããæ°ãããã¯ãããžãŒãã¢ãããŒããåŠã¶ããšã¯ããããã§ãã·ã§ãã«ãšããŠããŸããšã³ãžãã¢ãšããŠã®ã¬ãŽã§ã«ãé«ããéèŠãªã¹ããããªã®ã§ãã