Scala, JavaScript, Java ã®éã
Scala 㨠JavaScript ã¯ããã¨ããããäºã対極ãªã®ã§ãé¢ç½ãã§ãã
Scala ã¯ããããåï¼ã¯ã©ã¹ï¼ãä½ããã¨ãæ¨å¥¨ããã¦ããè¨èªã§ããåã¯1è¡ã§ç°¡åã«ä½ããããåã®ãã¿ã¼ã³ãããã³ã°ã®æ©è½ãã¯ããã¨ãã¦ãåã«é¢ããæ©è½ãå å®ãã¦ãã¾ããã¡ãã£ã¨ã§ãä½ãéãæã¯åãä½ããè¤éãªåé¡ã¯åãå¤ãããã¨ã§ãããå°ããªç°¡åãªåé¡ã«åå²ãã¦ããã¾ããä»ã®è¨èªã§ã¯ãã¡ã³ãå¤æ°ã«å¯¾ãã if æã§æ¸ããããªç®æããåã®ãã¿ã¼ã³ãããã³ã°ã使ãã¨åã§ãã
ããã«å¯¾ãã¦ãJavaScript ã¯ãã¾ãåãä½ããã«ãã©ãã©ãç¸ä¹ããã¦è¡ãæ¹ããåã®çµé¨ããè¨ãã¨ãã¿ã¼ã§ãã{} ã§ç°¡åã«ãªãã¸ã§ã¯ããä½ãã¦ãã¾ãã¾ãããåã¯çµæ§ã{type:"Hoge"} ã¨ããæã㧠type ã¨ããã¡ã³ãå¤æ°ã使ã£ã¦ãåã«ç¸å½ããç©ãèå¥ãã¦ãã¾ããã³ã¼ãã£ã³ã°ãã¦ããæä¸ã«åã®åé¡ãå éãã«ãããã¨ã«ãããã³ã¼ãã£ã³ã°ããªããèããã¨ããæã使ãã¾ãããªãã¸ã§ã¯ãã«èªç±ã«ã¡ã³ãå¤æ°ã®è¿½å ãã§ããã®ã§ããã¨ãããããããã«ãã¼ã¿ãç½®ãã¦ãããã¨ããæ¸ãæ¹ãã§ãã¾ãããã¨ãããããã¨ããã®ãå¾æã§ãã
Java ã®ã¯ã©ã¹ã¯ããã¼ã¿ã¨ã¡ã³ãå¤æ°ãæãã¦ãã¹ã³ã¼ããä½ãåºãã¦ããã ãã«è¿ãã§ããScala ã¨ã¯ç°ãªããåã®æã¤ã¡ãã»ã¼ã¸æ§ãå¼±ãã§ããå¦çã®è²¬ä»»ç¯å²ãä½ããã¨ã«ä¸»ç¼ãããã¨æãã¾ããã¯ã©ã¹å ã«éãå¯çµåã許ããã¦ãã¦ãã¯ã©ã¹ã®å¤ã¨ã¯ãå¯è½ãªéãç¥çµåãããã¨ãæ¨å¥¨ããã¦ãã¾ãã
åã®çµé¨ã§ã¯ãJavaã®å ´åãå¹³å200è¡ã«ã¤ã1ã¯ã©ã¹ãããããã¹ããã©ã³ã¹ã ã¨æãã¾ããã¯ã©ã¹ãå°ããããã®ãä½ãåºãã¹ã³ã¼ããå°ãããã¦ãè¦éããæªããªãã¾ããã大ããããã¨è¤éã«ãªãããã¾ãã
ããã«å¯¾ãã¦ãScala ã¯ãã¾ã ãã¹ããã©ã³ã¹ã主張ã§ããã»ã©çµé¨ãç©ãã§ãã¾ããããç¾ç¶ã§ã¯ãå¹³å20è¡ã«ã¤ã1ã¯ã©ã¹ä½ã£ã¦ãã¾ããJava ã®10åã§ããæããã«åã«å¯¾ããèããä»ã®è¨èªã¨éããã¨ããããã¾ãã
ããããããã®å¾åã¯éçåä»ãé¢æ°åè¨èªå ¨è¬ã®æ§è³ªã§ã¯ãªããã¨æ³åãã¦ãã¾ããHaskell ãåãããããä½ã£ãæ¹ãããã®ããªï¼Maybeã¢ãããListã¢ããã使ãã¨ãåæã«è¤æ°ã®åãé 延è©ä¾¡ãä½µç¨ãã¦ãä¸ã«æã«ç¸ä¹ãããããã¨ãã§ãã¾ããThe List monadã«ãã®ãã¯ããã¯ãç´¹ä»ï¼ç¿»è¨³ï¼ããã¦ãã¾ãã