…L@b³­p$˜å€X K"Y^ÒšTy"È¡a"²*µöz½0uü°êN(x`¶X@‘…”vAFZ0 ¹ãw\œ™®ÞÞòØÂ†êð'ŠX`mC#¨ø¨nÝYæ_š®É Ãø­åZnKÝlUÏœY #¦bid#ddates2022-06-22T23:55:00etitlexc効果ãŒç”±æ¥ã®ãƒ—ログラミング言語「Kokaã€ã®å‰¯ä½œç”¨åž‹ã€Geo3x3 86言語目実装PRdtagsg#geo3x3curlxhttps://fukuno.jig.jp/3619dbodyy c 精度付ã緯度経度表ç¾ã€ŒGeo3x3ã€ã®86言語目ã®å®Ÿè£…ã¨ã—ã¦ã€ãƒžã‚¤ãƒ­ã‚½ãƒ•ト社ã«ã‚ˆã‚‹é–‹ç™ºä¸­ã®ãƒ—ログラミング言語「Kokaã€ãŒåŠ ã‚りã¾ã—ãŸï¼mitsujiã•ã‚“ã€PR(プルリク)ã‚りãŒã¨ã†ã”ã–ã„ã¾ã™ï¼

ã¾ã é–‹ç™ºä¸­ã®ã“ã®è¨€èªžã®ç‰¹å¾´ã¯å‰¯ä½œç”¨ã®åž‹åŒ–。プログラミングã®ä¸–界ã§ã€é–¢æ•°å†…ã§ç™ºç”Ÿã™ã‚‹ç”»é¢è¡¨ç¤ºãªã©ã¯å‰¯ä½œç”¨ã¨å‘¼ã°ã‚Œã¾ã™ãŒã€Kokaã§ã¯ãれを型ã¨ã—ã¦æ˜Žç¤ºã—ã¾ã™ã€‚


「The Koka Programming Languageã€

「効果ã€ã¨æ—¥æœ¬èªžè¡¨è¨˜ãŒç›®ç«‹ã¡ã¾ã™ã­ï¼

サクッ㨠brew 㧠Koka をインストール

brew install koka

例ãˆã°ã€ã“ã¡ã‚‰å‰²ã‚Šç®—ã™ã‚‹é–¢æ•°ã‚’呼ã³å‡ºã™Kokaã®ãƒ—ログラム

fun div(x: int, y: int): int { x / y } fun main() { div(10, 3).println }

funã¯é–¢æ•°ã€åž‹ã¯TypeScript風ã§å¾Œç½®ã€returnã¯çœç•¥å¯ã€‚test.kkã¨ã—ã¦ä¿å­˜ã—

koka -e test.kk

ã¨ã—ã¦ã€ã‚³ãƒ³ãƒ‘イル&実行。

関数divã«ã€ãƒ‡ãƒãƒƒã‚°å‡ºåŠ›ã‚’è¿½åŠ ã—ã¦ã¿ã¾ã™ã€‚

fun div(x: int, y: int): int { y.println x / y }

ã™ã‚‹ã¨ã€ã‚³ãƒ³ãƒ‘イル時ã«ã‚¨ãƒ©ãƒ¼

error: effects do not match

関数ã®åž‹ã«ã€<console> を追加ã™ã‚‹ã¨

fun div(x: int, y: int): <console> int { y.println x / y }

コンパイル&実行ã€å†ã³ã§ãるよã†ã«ãªã‚Šã¾ã—ãŸã€‚例外ãŒç™ºç”Ÿã™ã‚‹å ´åˆã¯ <exn> を使ã„ã€ã‚³ãƒ³ã‚½ãƒ¼ãƒ«å‡ºåŠ›ã¨ä¾‹å¤–ã€ä¸¡æ–¹ç™ºç”Ÿã™ã‚‹å ´åˆã¯ä¸‹è¨˜ã®ã‚ˆã†ã«ä¸¡æ–¹æŒ‡å®šã—ã¾ã™

fun div(x: int, y: int): <console, exn> int { y.println if (y == 0) { throw("divide by zero!") } x / y }

使ã£ã¦ã¿ãŸããªã‚Šã¾ã—ãŸï¼Ÿè‡ªåˆ†ã®ã‚ˆã使ã†è¨€èªžã®Geo3x3実装ã¨ã€Kokaã§ã®å®Ÿè£…「geo3x3.kkã€ã€è¦‹æ¯”ã¹ã¦ã‚»ãƒ«ãƒ•相性診断ã—ã¦ã¿ã¾ã—ょã†ï¼

プログラム内ã§ã®ãƒ–ãƒ­ãƒƒã‚¯ã®æ›¸ãæ–¹ã¯ã€Geo3x3ã®å®Ÿè£…ã®ã‚ˆã†ã«Pythoné¢¨ã‚¤ãƒ³ãƒ‡ãƒ³ãƒˆã§æ›¸ã„ã¦ã‚‚ã€æœ¬ãƒ–ログã®ã‚ˆã†ã«æ³¢ã‚«ãƒƒã‚³ã¨ã‚»ãƒŸã‚³ãƒ­ãƒ³ã‚’使ã£ãŸJavaScripté¢¨ã«æ›¸ã„ã¦ã‚‚ã„ã„ãƒã‚¤ãƒ–リッド型。

ã©ã¡ã‚‰ã®æµæ´¾ã®äººã«ã‚‚入りやã™ã„ï¼