æ°çã§ã¯ãScalaãGoãSwiftãªã©ã®é«ã¬ãã«ãŠãããŒãµã«ããã°ã©ãã³ã°èšèªã®ç¹åŸŽãšææ°ã®éçºååã«ã€ããŠèª¬æããŠããŸãã å€å žçãªC ++ãJavaãããã³CïŒèšèªã®ææ°ã®æšæºã®äž»ãªæ©èœã«ã€ããŠèª¬æããŸããããããã¹ãŠã®èšèªã®ã©ã ãåŒãC ++ 11ã®å³èŸºå€åç §åããã³ç§»åã»ãã³ãã£ã¯ã¹ãCïŒã®æ±çšãã³ãã¬ãŒãã®å ±åæ£ããã³ååæ£ã Rubyã¹ã¯ãªããèšèªã®è¡šçŸãå€§å¹ ã«æ¡åŒµããããã®ãããã¯ãåäžç¶æ¿ãšæ··åã®ã¡ã«ããºã ãããã³ã¢ãã«ã®ã¿ã€ãã³ã°ãèæ ®ãããŸãã ã€ãã³ãè£ çœ®ãšã€ãã³ãããŒã¹ã®ããã°ã©ãã³ã°ã®èª¬æãè¿œå ãããŸããã PythonãRubyãCïŒãJavaãC ++ãScalaãGoãããã³Swiftã®ã¹ã¯ãªããããã³ãªããžã§ã¯ãæåèšèªã§ã®é¢æ°åããã°ã©ãã³ã°ã¹ã¿ã€ã«ã®ã¢ããªã±ãŒã·ã§ã³ã瀺ãããŠããŸãã
æ¬ããã®æç²ã Scalaèšèª
ãã®èšèªã¯ãã¹ã€ã¹ã®ããŒã¶ã³ãå·¥ç§å€§åŠã§äœæãããŸããïŒ2004幎ãäž»èè ã¯Martin Oderskyã§ãïŒã ããã¯ãã³ã³ããŒãã³ããœãããŠã§ã¢ã®æ¹åãããèšèªãµããŒãã®éçºãç®çãšãã調æ»ã®çµæã§ããã 2ã€ã®ã¢ã€ãã¢ãåºç€ãšããŠæ¡çšãããŸããã
â¢ã³ã³ããŒãã³ããœãããŠã§ã¢ãããã°ã©ãã³ã°ããããã®èšèªã¯ã¹ã±ãŒã©ãã«ã§ããå¿ èŠããããŸãïŒåãæŠå¿µã䜿çšããŠãããã°ã©ã ã®å°ããªæçãšå€§ããªæçã®äž¡æ¹ãèšè¿°ããããšãå¯èœã§ãªããã°ãªããŸããïŒã ãããã£ãŠã泚æã¯æœè±¡åãæ§æãããã³å解ã®ã¡ã«ããºã ã«éäžããŠãããä»»æã®1ã¬ãã«ã®ã¹ã±ãŒãªã³ã°ã§ã®ã¿æçšãªå€æ°ã®æ§é ã®å°å ¥ã«ã¯æ³šç®ããŠããŸããã
â¢ã¹ã±ãŒã©ãã«ãªã³ã³ããŒãã³ããµããŒãã¯ããªããžã§ã¯ãæåããã°ã©ãã³ã°ãšæ©èœããã°ã©ãã³ã°ã®äž¡æ¹ãçµã¿åãããèšèªã«ãã£ãŠæäŸãããŸãã Scalaã®äž»èŠãªé©æ°ã®ããã€ãã¯ããããã®ããã°ã©ãã³ã°ãã©ãã€ã ãèåããæŠå¿µã§ãã Scalaãåç §ããéçåä»ãèšèªã§ã¯ããããã®ãã©ãã€ã ã¯ãããŸã§å®å šã«åé¢ãããŠããŸããã
Scalaã¯ã2004幎1æã«JVMãã©ãããã©ãŒã ã§ã2004幎6æã«.NETãã©ãããã©ãŒã ã§äœ¿çšããããã«ãªãªãŒã¹ãããŸããã ããã«ãå€ãã®Scalaã³ã³ãã€ã©ãŒãç©æ¥µçã«éçºãããŠããŸãã
ãããã£ãŠãScalaã¯ãé¢æ°åããªããžã§ã¯ãæåãããã³äžŠåããã°ã©ãã³ã°ããµããŒãããã匷ãåä»ãããããã«ããã©ãã€ã èšèªã§ãã Javaä»®æ³ãã·ã³äžã«å®è£ ãããããã«èšèšãããŠãããJavaèšèªã®æ¢ç¥ã®æ¬ é¥ã«éšåçã«åæ©ä»ããããŠããŸãã æ©èœç¹æ§ãåœä»€åèšèªã«æãç©æ¥µçã«çµ±åããŸãã ãã¡ãŒã¹ãã¯ã©ã¹ä»¥äžã®é¢æ°ãããŒã«ã«åæšè«ã¡ã«ããºã ãé 延ïŒé 延ïŒèšç®ããã¿ãŒã³ãããã³ã°ãã«ãªãŒåãæ«å°Ÿååž°ãéçºãããæ±çšããŒã«ïŒå ±åæ£ãšååæ£ïŒãã¡ãã»ãŒãžããŒã¹ã®äžŠååŠçãç¹æ§ããŒã¹ã®ç¶æ¿ïŒãããã¯ã¯ã©ã¹ãšã€ã³ã¿ãŒãã§ãŒã¹ã®éã®äœãïŒã ç£æ¥ããã³ç§åŠã®äž¡æ¹ã§ç©æ¥µçã«äœ¿çšãããŠããŸãã 欧å·ç 究è©è°äŒã«ãã£ãŠè³éæäŸãããéçºã
Scalaã¯ãSmalltalkã§äœ¿çšããããã®ãšåæ§ã®çŽç²ãªãªããžã§ã¯ãæåã¢ãã«ã䜿çšããŸããåå€ã¯ãªããžã§ã¯ãïŒé¢æ°ã®æ°å€ãšçµæã®äž¡æ¹ïŒã§ãããåæäœã¯ã¡ãã»ãŒãžéä¿¡ããªããžã§ã¯ãã¡ãœããåŒã³åºãã§ãã ããšãã°ã2 + 3ã®è¿œå ã¯2 +ïŒ3ïŒãšããŠè§£éãããŸããã€ãŸããåŒæ°ã3ããæã€ã¡ãœããã+ãã®åä¿¡åŽãªããžã§ã¯ãã2ãã®åŒã³åºããšããŠè§£éãããŸãã ããã§ã3ã¯ãœãŒã¹ãªããžã§ã¯ããšèŠãªãããŸããããã¯ScalaãšJavaã®éãã§ããJavaã¯ããªããã£ãåïŒããšãã°ãbooleanãŸãã¯intïŒãšåç §åãåå²ããå€ãšããŠé¢æ°ãæäœããæ¹æ³ããªãããã§ãã
ãã¡ãããJavaããã°ã©ããŒã¯ãScalaã§ã¯é¢æ°ããªããžã§ã¯ãã§ããããšã«å€§ãã«é©ãã§ãããã ãã ããScalaã§ã¯ãé¢æ°ãåŒæ°ãšããŠæž¡ãããå€æ°ãšããŠä¿åããããå¥ã®é¢æ°ããè¿ãããšãã§ããŸãã éåžžã®å€æ°ã®ãããªé¢æ°ãæäœãããã®æ©èœã¯ãé¢æ°åããã°ã©ãã³ã°ã®åºç€ã§ããããã®æ¬è³ªã¯äžå€å€æ°ãæäœããããšã§ãã
é¢æ°ãå®çŸ©ããåã«ãããŒã¯ãŒãdefãèšå®ãããŸãã ã¯ã©ã¹å®çŸ©ã¯äºçŽèªclassã§å§ãŸããŸãã ã¯ã©ã¹ã¯ãäºçŽèªfinalã䜿çšããŠãããã«ãµãã¯ã©ã¹åãé²ãããšãã§ããŸãã ãªããžã§ã¯ãæåèšèªC ++ãJavaãCïŒã®ããã«ãã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ã¯thisãšããåèªã䜿çšããŠèªèº«ãåç §ã§ããŸãã Scalaã¯ãªãŒããŒããŒããããã¡ãœãããèš±å¯ããŸãã Javaãšåæ§ã«ãextendããŒã¯ãŒãã¯ãã¯ã©ã¹ãå¥ã®ã¯ã©ã¹ã®ãµãã¯ã©ã¹ã§ããããšã宣èšããŸãã Scalaã¯å€éç¶æ¿ããµããŒãããŠããŸããã 代ããã«ãèšèªã¯ç¹æ§ããŒã¹ã®æ··åç¶æ¿ã䜿çšããŸããããã«ãããããã€ãã®ãµãã¯ã©ã¹ã«å ±éã®å±æ§ãšã¡ãœãããå«ãŸããããã«ãªããŸãã ç¹æ§ã¯ãã¯ã©ã¹ãŸãã¯ä»ã®ç¹æ§ãæ¡åŒµã§ããŸãã Scalaã®ãµãã¯ã©ã¹ã¯ã芪ã¯ã©ã¹ãšç¹æ§ã®äž¡æ¹ããã¡ãœãããç¶æ¿ã§ããŸãã ç¹æ§ã¯ã芪ã¯ã©ã¹ããã³ãµãã¯ã©ã¹ãšã®é¢ä¿ãæã€ããšãã§ããŸãã ç¹æ§å®£èšã¯ããŒã¯ãŒãtraitã§å§ãŸããŸãã ãã®ç¹æ§ã䜿çšããã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ãäœæããããšãç¹æ§ã®æ¬äœãå®è¡ãããŸãã ã¯ã©ã¹ãŸãã¯ç¹æ§ã®ããã©ã«ãã®èŠªã¯ãAnyã¯ã©ã¹ã®çŽæ¥ã®åå«ã§ããAnyRefã¯ã©ã¹ã§ãã
Scalaã®ã³ã³ã¹ãã©ã¯ã¿ãŒã¯ãã¯ã©ã¹å®çŸ©ã®æ¬äœã«ãããŸãã ã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ãäœæããããšããã©ã¡ãŒã¿ãŒãªã¹ãå ã®ãã©ã¡ãŒã¿ãŒã«å¯Ÿå¿ããåãã£ãŒã«ãã¯ããã©ã¡ãŒã¿ãŒã«ãã£ãŠèªåçã«åæåãããŸãã äžè¬ã«ãæ瀺çãªã³ã³ã¹ãã©ã¯ã¿ãŒã¯å¿ èŠãããŸããã 掟çã¯ã©ã¹ã®ã³ã³ã¹ãã©ã¯ã¿ãŒã¯ã芪ã¯ã©ã¹ã®ã³ã³ã¹ãã©ã¯ã¿ãŒã®1ã€ãåŒã³åºãå¿ èŠããããŸãã ç¹æ§ã¯ãåŒæ°ã®ãªããã©ã€ããªã³ã³ã¹ãã©ã¯ã¿ãŒã®ã¿ã䜿çšããŸãã ãã¬ã€ãã¯ã芪ã¯ã©ã¹ã®ã³ã³ã¹ãã©ã¯ã¿ãŒã«åŒæ°ãæž¡ãããšã¯ã§ããŸããã
Scalaã®å¯èŠæ§ã«ãŒã«ã¯Javaã«äŒŒãŠããŸãããããã€ãã®ããªãšãŒã·ã§ã³ããããŸãã C ++ãšã¯ç°ãªããScalaã¯ããã©ã«ãã§ããããªãã¯ãå¯èŠæ§ã䜿çšããŸãã å¯èŠæ§ã¯ãä¿è·ãããããŒã¯ãŒããšãã©ã€ããŒããªããŒã¯ãŒãã«ãã£ãŠå¶åŸ¡ãããŸãã å¯èŠæ§ã¯ãé¢æ°ãå€æ°ããŸãã¯ç¹æ§ã®å®£èšã®æåã«ç€ºãããŸãã private [this]ã䜿çšãããšãã¯ã©ã¹å ã®ç¹å®ã®ã€ã³ã¹ã¿ã³ã¹ã®å®£èšãéããããŸãã
ã¡ãœããå®çŸ©ã¯ãdefããŒã¯ãŒãã§å§ãŸãããªãã·ã§ã³ã®åŒæ°ãªã¹ããã³ãã³ãïŒããã¡ãœããæ»ãå€ã®ã¿ã€ããç¶ãéåžžã®é¢æ°ãšèŠãªãããŸãã æœè±¡ã¯ãæ¬äœãæããªãã¡ãœããã§ãã ã¡ãœããã¯ãã¹ãã§ããŸãã
äŸãšããŠãè€çŽ æ°ã®æœè±¡ã¯ã©ã¹ãæ³åããŠãã ããã
class Complex_number (first: Double, second: Double) { val re = first val im = second override def toString = re + " + " im + "i" def add(that: Complex_number): Complex_number = new Complex_number (this.re + that.re, this.im + that.im) def subtract(that: Complex_number): Complex_number = new Complex(this.re - that.re, this.im - that.im) }
ã¯ã©ã¹å®çŸ©ã«ã¯ãreïŒå®éšïŒãšimïŒèéšïŒã®2ã€ã®å±æ§ã®ã¿ãå«ãŸããŸãã overrideããããã£ã䜿çšããŠãtoStringæäœã¯ãªãŒããŒã©ã€ããããŸãã ããã¯ãçµæã®å°å·ã容æã«ããããã«è¡ãããŸãã å ç®ãšæžç®ã®2ã€ã®æœè±¡æŒç®ãæäŸãããŸãã æœè±¡æäœã¯2ã€ã®ã¡ãœãããšããŠèšè¿°ãããŸãã åã¡ãœããã¯æ°ããè€çŽ æ°ãäœæãããªãŒããŒã©ã€ããããtoStringã¡ãœããã䜿çšããŠã³ã³ãœãŒã«ã«èªåçã«å°å·ãããŸãã
ãã®ãã©ã°ã¡ã³ããScalaã€ã³ã¿ãŒããªã¿ãŒã«ããŒãããåŸã次ã®ã³ãã³ããå®è¡ã§ããŸãã
val c1 = new Complex_number(3, 4) // 3.0 + 4.0 i val c2 = new Complex_number(4, 5) // 4.0 + 5.0 i c1 add c2 // 7.0 + 9.0 i c1 subtract c2 // -1.0 + â 1.0
ã»ãã³ãã³ã¯ãèšèªã§äœ¿çšãããé »åºŠã¯ã¯ããã«äœããªããŸããã»ãã³ãã³ã¯ã1è¡ã§åç¬ã§èšè¿°ãããŠããå Žåãã¹ããŒãã¡ã³ãã®æåŸã«ã¯é 眮ãããŸããã è¡ã«è€æ°ã®ã¹ããŒãã¡ã³ããå«ãŸããå Žåãã»ãã³ãã³ãå¿ èŠã§ãã Scalaã¯å¯å€ããã³äžå€ã®äž¡æ¹ã®ããŒã¿æ§é ããµããŒãããŠããŸãèšèªã¯å€æ æ§ãæäŸããå€æ°ã®åãæå®ãããŠããªãå Žåãå€æ°ã«æå®ãããå€ã«åºã¥ããŠè¡šç€ºãããŸãã
Scalaã¯ãé åãé£æ³é åããªã¹ããã¿ãã«ãã»ãããªã©ã®åºç¯ãªããŒã¿åã®ã»ãããå®è£ ããŠããŸãã é åã¯å¯å€ãªããžã§ã¯ãã§ããããªã¹ãã¯äžå€ãªããžã§ã¯ãã§ãã ãªã¹ãã¯é¢æ°åããã°ã©ãã³ã°ã«äœ¿çšãããé åã¯åœä»€åããã°ã©ãã³ã°ã«äœ¿çšãããŸãã ã»ãããšé£æ³é åã¯ããã¬ã€ãã䜿çšããŠå¯å€ãšäžå€ã®äž¡æ¹ãäœæã§ããŸãã ãã¬ã€ãã¯ããªããžã§ã¯ãã®ã³ã³ãã³ããæ¡åŒµããæœè±¡ã€ã³ã¿ãŒãã§ãŒã¹ã§ããããšãæãåºããŠãã ããã ããšãã°ããè»äž¡ãã¯ã©ã¹ãšè»äž¡ãæ¡åŒµãããå茪ãç¹æ§ãããå Žåããã®è»äž¡ã¯ãå茪ãç¹æ§ãè¿œå ãããè»äž¡ãã¯ã©ã¹ã«å¯Ÿå¿ããŸãã ã»ããããã³é£æ³é åã®å Žåããå¯å€ãããã³ãäžå€ãã®ç¹æ§ãã¯ã©ã¹ã«ãªã³ã¯ãããšãã»ãããŸãã¯é£æ³é åãæçµçã«ãããã®å¯å€æ§ãŸãã¯äžå€æ§ãä¿èšŒããŸãã
æŽæ°é åã¯ãArray [Int]ïŒ4ïŒãšããŠå®£èšãããŸãã ããã¯ããªããžã§ã¯ãã4ã€ã®æŽæ°ãå«ãé åã§ããããšãæå³ããŸãã å¯å€ã€ã³ããã¯ã¹ã¯ãäžå¯Ÿã®æ¬åŒ§å ã«æžã蟌ãŸããŸãã åããŒã¿æ§é ã¯ãªããžã§ã¯ãã§ãããããæ°ããã³ã³ã¹ãã©ã¯ã¿ãŒã䜿çšããŠé åãäœæãããŸãã ããšãã°ãvalïŒstudentNames = new array [String]ïŒ20ïŒã宣èšãããšã20è¡ãå«ãé åãªããžã§ã¯ããäœæãããŸãã ãã®æååã«ã¯ãstudentNamesïŒiïŒã䜿çšããŠã¢ã¯ã»ã¹ã§ããŸããiã¯æŽæ°ã®ã€ã³ããã¯ã¹å€æ°ã§ãã
ãªã¹ãã¯ããªã¹ãïŒ1ã2ã3ïŒã®åœ¢åŒã§ããŸãã¯ã::ãèšå·ã§æ¥ç¶ãããè€æ°ã®èŠçŽ ãšããŠå®£èšã§ããŸãã ããšãã°ããªã¹ãïŒ1ã2ã3ïŒã¯1 :: 2 :: 3 :: Nilãšæžãããšãã§ããŸãã 2ã€ã®ãªã¹ãxlãšylã¯ãã:::ãèšå·ã䜿çšããŠæ¥ç¶ãããŸãã ããšãã°ãListïŒ1ã2ïŒ::: ListïŒ3ã4ã5ïŒã¯ListïŒ1ã2ã3ã4ã5ïŒãäœæããŸãã
Scalaã¯ãif-then-elseåŒãcaseã¯ã©ã¹ãwhile-loopãdo-while-loopã¹ããŒãã¡ã³ããforeachloopã€ãã¬ãŒã¿ãŒããµããŒãããforloopå埩ãšååž°é¢æ°åŒã³åºããå®çŸ©ããŸãã é¢æ°ããã©ã¡ãŒã¿ãŒãšããŠå¥ã®é¢æ°ã«æž¡ããšãæ§æãã·ãã¥ã¬ãŒãã§ããŸãã ããã«ãScalaã¯ã€ã³ããã¯ã¹ä»ãå€æ°ã®æŽæ°ããµããŒãããŠãããããå®æçãªå埩ã«åºã¥ããŠããã°ã©ã ãéçºã§ããŸãã
å¥ã®é¢æ°å®£èšã®äŸãèããŠã¿ãŸãããã
def factorial(n: Int): Int = { if (n == 0) 1 else n * factorial(n â 1) }
ããã§ãé¢æ°ã¯éä¹ãèšè¿°ããåŒæ°ã®åãšçµæã®åãæŽæ°ãšããŠå®£èšããŸãã ååž°çãªé¢æ°åŒã³åºããæäŸãããŸãã
Scalaã¯ãé¢æ°ãä»ã®é¢æ°å ã«ãã¹ãã§ãããããã¯æ§é åèšèªã§ãã ããŒã«ã«å€æ°ã¯ã宣èšããããããã¯å ã«ã¹ã³ãŒããæã¡ãŸãã ãã¹ãããããããã¯å ã§ãå€éšãããã¯ã§å®£èšãããå€æ°ããªãŒããŒã©ã€ãã§ããŸãã Scalaã¯Javaããã±ãŒãžã䜿çšããŠã¢ãžã¥ãŒã«ã®æŠå¿µããµããŒãããææ¡ã€ã³ããŒãã§ã¡ãœãããã€ã³ããŒãã§ããŸãã ããã©ã«ãã§ã¯ãScalaã¯ãããã°ã©ã ãå®è¡ããåã«ãã¹ãŠã®Javaã¯ã©ã¹ã©ã€ãã©ãªãšScalaã®äºåå®çŸ©ã©ã€ãã©ãªãã€ã³ããŒãããŸãã ãã©ã¡ãŒã¿ãŒãæž¡ãããã«ãScalaã¯å€ã«ããåãæž¡ããšååã«ããåãæž¡ãã䜿çšããŸãã ååã§æž¡ãããã®æ§æã¯:: '=>'ã§ãå€ã§æž¡ãããã®æ§æã¯ïŒã§ãã Scalaã¯JavaäŸå€åŠçæ©èœã䜿çšããŸãã
Scalaã³ãŒãäŸ
def add7(n: Int): Int = {n + 7} // 7
add7é¢æ°ã¯ãå ¥åãã©ã¡ãŒã¿ãŒnã«7ãå ç®ããå€ãè¿ããŸãã ãã©ã¡ãŒã¿ã®åãšé¢æ°ã®çµæã®åã¯æ瀺çã«å®£èšãããŠããããšã«æ³šæããŠãã ããã é¢æ°ã®æ¬äœã¯ãããã¯ã§ãããäžæ¬åŒ§ã§å²ãŸããŠããŸãã
def int_square(x: Int): Int = {x * x} // def square_add(x: Int): Int = int_square(add7(x)) //
square_addé¢æ°ã¯ãsquareãšadd7ã®2ã€ã®é¢æ°ã®æ§æã瀺ããŸãã ãŸããé¢æ°add7ã䜿çšããŠãå ¥åãã©ã¡ãŒã¿ãŒããã7å€ãæ°ãçæããçæãããå€ã2ä¹ããŸãã ããšãã°ãsquare_addïŒ5ïŒã¯squareïŒ5 + 7ïŒ= 144ãšåçã§ãã
def power_rec(x: Double, n:Int): Double = {if (n == 0) 1 else x * power_rec(x, n-1)} // if-then-else
power_recé¢æ°ã¯ãScalaã§ã®if-then-elseåŒãšååž°ã®äœ¿çšã瀺ããŠããŸãã è¿°éšã¯æ¬åŒ§ã§å²ãŸããŠãããå€ç°ïŒå€æ°ã®å€ã®å€æŽïŒã¯ãªãããšã«æ³šæããŠãã ããã
def power_iter(x : Int, n: Int): Int = // power { var a = n; var b = 1; while(a > 0 ) {b = x * b; a = a - 1}// }
å¯Ÿç §çã«ãpower_iteré¢æ°ã¯ããŒã«ã«å¯å€å€æ°aããã³bã䜿çšããŠãé¢æ°xnã®å€ãèšç®ããŸãã å€ã¯ã¢ãã¥ã ã¬ãŒã¿bã«èç©ãããwhileã«ãŒãã®å®äºåŸã«æçµçã«è¿ãããŸãã
def sum_list(xl:List[Int]): Int = // { if (xs.isEmpty) 0 else xl.head + sum_list(xs.tail) }
sum_listé¢æ°ã¯ããªã¹ãã®æ®ãã®éšåã§ååž°åŒã³åºãã䜿çšããŠããã¹ãŠã®æŽæ°ããªã¹ãã«è¿œå ããŸãã çµã¿èŸŒã¿ã®isEmptyã¡ãœããã䜿çšããŠç©ºã®ãªã¹ãããã§ãã¯ããheadã¡ãœããã䜿çšããŠãªã¹ãã®æåã®èŠçŽ ã«ã¢ã¯ã»ã¹ããtailã¡ãœããã䜿çšããŠæ®ãã®ãªã¹ãã«ã¢ã¯ã»ã¹ããŸãã
def apply_all(my_func:Int => Int, xl:List[Int]): List[Int] = {xl map my_func}
Scalaã¯çµã¿èŸŒã¿ã®å°å³è¡šç€ºæ©èœã䜿çšããŸããããã¯apply_allæ©èœãã©ãŒã ãé©çšããæ©èœãæäŸããŸãã ããã§ã¯ãé¢æ°ã®æ¬äœã«ãæåã«ãã©ã¡ãŒã¿ãŒïŒxlïŒãæžã蟌ãŸãã次ã«é«æ¬¡ã®è¡šç€ºé¢æ°ïŒmapïŒã次ã«é¢æ°åïŒmy_funcïŒãæžã蟌ãŸããŸãã ãã®å Žåãapply_allïŒint_squareãListïŒ1ã2ã3ïŒïŒã¯ListïŒ1ã4ã9ïŒã®ãªã¹ããçæããŸãã my_funcé¢æ°ã®å宣èšã¡ãœããã«æ³šæããŠãã ããã é¢æ°ã®åã¯ãInt => IntãšããŠå®£èšãããŸããããã¯ãæŽæ°åã®å ¥ååŒæ°ãåããæŽæ°åã®åºåå€ãçæããããšãæå³ããŸãã
def construct(my_funcs:List[Int => Int], n:Int): List[Int] = // { if (my_funcs.isEmpty) Nil else my_funcs.head(n)::construct(my_funcs.tail, n) }
æåŸã«ãæ§æé¢æ°ã¯åãåŒæ°ã«é©çšãããäžé£ã®é¢æ°ãåãåããäžé£ã®åºåå€ãçæããŸãã ããšãã°ãconstructïŒListïŒadd7ãint_squareïŒã5ïŒã¯ListïŒ12ã25ïŒãçæããŸãã é¢æ°ã®ãªã¹ãã空ã®å Žåãã³ã³ã¹ãã©ã¯ãé¢æ°ã䜿çšããããã°ã©ã ã¯ãã«ãªã¹ããè¿ããŸãã ãã以å€ã®å Žåãæ®ãã®é¢æ°ããªã¹ãããååž°çã«åŒã³åºããæåã®é¢æ°ãé©çšããçµæãšãæ®ãã®é¢æ°ãåãåŒæ°ã«é©çšããŠåŸãããåºåã·ãŒã±ã³ã¹ã®æ®ããçµã¿åãããŸãã
ã¬ãã¥ã¢ãŒïŒ
ãœã³ããB.V.ãæè¡ç§åŠå士ãææãæ å ±æè¡ç 究æé·
ãµã³ã¯ãããã«ãã«ã¯æ å ±åŠç 究æã®ã·ã¹ãã åæãšã¢ããªã³ã°
ããã³RASã®èªååã
Pasmurov A. Yaããå·¥åŠå士ãåææãIEEEã®ã·ãã¢ã¡ã³ããŒãé£éŠå·ãŠãã¿ãªãŒãšã³ã¿ãŒãã©ã€ãºãã¬ãŒãã³ã°ã»ã³ã¿ãŒé·
ãã·ã¢é£éŠé茞çã®ZashchitaInfoTransããµã³ã¯ãããã«ãã«ã¯æ¯éšã
»æ¬ã®è©³çŽ°ã«ã€ããŠã¯ãåºç瀟ã®ãŠã§ããµã€ããã芧ãã ãã
» ã³ã³ãã³ã
» æç²
Khabrozhiteleyã¯ãŒãã³ã®20ïŒ å²åŒ-Orlov