{"id":2948,"date":"2016-10-21T14:00:39","date_gmt":"2016-10-21T05:00:39","guid":{"rendered":"http:\/\/sitest.jp\/blog\/?p=2948"},"modified":"2018-08-27T18:31:27","modified_gmt":"2018-08-27T09:31:27","slug":"haskell%e3%81%ae%e3%82%88%e3%81%86%e3%81%abjs%e3%82%92%e6%9b%b8%e3%81%93%e3%81%86%ef%bc%81livescript%e3%81%ae%e5%9f%ba%e6%9c%ac%e3%81%ae%e3%82%ad","status":"publish","type":"post","link":"https:\/\/sitest.jp\/blog\/?p=2948","title":{"rendered":"Haskell\u306e\u3088\u3046\u306bJS\u3092\u66f8\u3053\u3046\uff01LiveScript\u306e\u57fa\u672c\u306e\u30ad"},"content":{"rendered":"<p>\u958b\u767a\u52b9\u7387\u3092\u3042\u3052\u308b\u305f\u3081\u3001AltJS\u3092\u5229\u7528\u3055\u308c\u3066\u3044\u308b\u65b9\u306f\u591a\u3044\u306e\u3067\u306f\u306a\u3044\u3067\u3057\u3087\u3046\u304b\uff1f<\/p>\n<p>AltJS\u3067\u306f\u3001TypeScript\u3084CoffeeScript\u306a\u3069\u304c\u6709\u540d\u3067\u3059\u306d\u3002<\/p>\n<p>\u4eca\u56de\u306f\u305d\u306eAltJS\u306e\u4e2d\u304b\u3089LiveScript\u3068\u3044\u3046\u8a00\u8a9e\u3092\u7d39\u4ecb\u3057\u3066\u3044\u304d\u307e\u3059\u3002<br \/>\n<!--more--><\/p>\n<p>\u82f1\u8a9e\u306e\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3057\u304b\u307e\u3060\u306a\u304f\u3001\u60c5\u5831\u3068\u3057\u3066\u3082\u307e\u3060\u5c11\u306a\u3044\u306e\u3067\u3001<br \/>\nLiveScript\u306e\u57fa\u672c\u306e\u30ad\u3092\u7d39\u4ecb\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n<p>AltJS\u306b\u3064\u3044\u3066\u8a73\u3057\u3044\u5185\u5bb9\u306f\u3053\u3061\u3089\u306e\u8a18\u4e8b\u3092\u5fa1\u89a7\u304f\u3060\u3055\u3044\u3002<br \/>\n<a href=\"http:\/\/sitest.jp\/blog\/?p=1697\" target=\"_blank\">http:\/\/sitest.jp\/blog\/?p=1697<\/a><\/p>\n<div style=\"text-align: left; padding: 10px 10px; border-color: #73bc9b; border-width: 0 0 1px 7px; border-style: solid; background: #F8F8F8;margin-top: 2em; margin-bottom: 2em;\">\n<h3 style=\"text-align: left;\">LiveScript\u3068\u306f\uff1f<\/h3>\n<\/div>\n<p><a href=\"http:\/\/livescript.net\/\" target=\"_blank\" rel=\"nofollow\">LiveScript<\/a>\u3068\u306f\u3001CoffeeScript\u304c\u3055\u3089\u306b\u62e1\u5f35\u3055\u308c\u305fAltJS\u306e\u4e00\u7a2e\u3067\u3059\u3002<\/p>\n<p>\u95a2\u6570\u578b\u8a00\u8a9e\u306e\u3088\u3046\u306a\u66f8\u304d\u65b9\u304c\u3067\u304d\u3001Haskell\u3092\u601d\u308f\u305b\u308b\u3088\u3046\u306a\u898b\u305f\u76ee\u3067\u3059\u3002<\/p>\n<p>\u5b66\u7fd2\u30b3\u30b9\u30c8\u304c\u9ad8\u3081\u3067\u3059\u304c\u3001\u899a\u3048\u59cb\u3081\u308b\u3068\u30b0\u30f3\u3068\u958b\u767a\u52b9\u7387\u304c\u3042\u304c\u308a\u307e\u3059\u3002<\/p>\n<div style=\"text-align: left; padding: 10px 10px; border-color: #73bc9b; border-width: 0 0 1px 7px; border-style: solid; background: #F8F8F8;margin-top: 2em; margin-bottom: 2em;\">\n<h3 style=\"text-align: left;\">LiveScript\u306e\u8a18\u6cd5<br \/>\n<\/h3>\n<\/div>\n<p><a href=\"http:\/\/livescript.net\/\" target=\"_blank\" rel=\"nofollow\">LiveScript\u306e\u516c\u5f0f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8<\/a>\u306e\u4e2d\u304b\u3089\u8a18\u6cd5\u30926\u3064\u7d39\u4ecb\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n<h4 style=\"border-bottom: solid 4px #73bc9b; margin-bottom: 30px;\">1. \u95a2\u6570\u5b9a\u7fa9\u300c->\u300d<\/h4>\n<p>JavaScript\u306e\u300cfunction\u300d\u3092\u300c->\u300d\u6f14\u7b97\u5b50\u3067\u8868\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<br \/>\n\u5f15\u6570\u3092\u5ba3\u8a00\u305b\u305a\u3001\u95a2\u6570\u5185\u3067\u300cit\u300d\u53e5\u3092\u4f7f\u7528\u3059\u308b\u3068\u81ea\u52d5\u7684\u306b\u5f15\u6570\u306b\u300cit\u300d\u304c\u9069\u5fdc\u3055\u308c\u307e\u3059\u3002<\/p>\n<pre><code>[LiveScript]\n\nnum = -&gt; 2\nnum() # =&gt; 2\n<\/code><\/pre>\n<pre><code>[JavaScript]\n\nvar num;\nnum = function(){\n  return 2;\n};\nnum();\n<\/code><\/pre>\n<h4 style=\"border-bottom: solid 4px #73bc9b; margin-bottom: 30px; margin-top: 30px;\">2.\u95a2\u6570\u5b9f\u884c\u300c!\u300d<\/h4>\n<p>JavaScript\u306e\u300c()\u300d\u3092\u300c!\u300d\u6f14\u7b97\u5b50\u3067\u8868\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<br \/>\nCoffeeScript\u306e\u3088\u3046\u306b\u5f15\u6570\u304c\u5b58\u5728\u3059\u308b\u3068\u300c!\u300d\u3092\u7701\u3044\u3066\u66f8\u304f\u3053\u3068\u304c\u51fa\u6765\u307e\u3059\u3002<\/p>\n<pre><code>[LiveScript]\n\nnum = -&gt; 2\nnum! # =&gt; 2\n\ndouble = -&gt; it * 2\ndouble 2 # =&gt; 4\n<\/code><\/pre>\n<pre><code>[JavaScript]\n\nvar num, double;\nnum = function(){\n  return 2;\n};\nnum();\n\ndouble = function(it){\n  return it * 2;\n};\ndouble(2);\n<\/code><\/pre>\n<p><\/p>\n<h4 style=\"border-bottom: solid 4px #73bc9b; margin-bottom: 30px; margin-top: 30px;\">3. \u30d1\u30a4\u30d4\u30f3\u30b0\u300c|>\u300d<\/h4>\n<p>LiveScript\u3067\u300c|>\u300d\u6f14\u7b97\u5b50\u3092\u4f7f\u7528\u3059\u308b\u3053\u3068\u304c\u51fa\u6765\u307e\u3059\u3002<br \/>\n\u4f8b\u3048\u3070\u300cx |> y\u300d\u3060\u3068y\u306e\u6700\u7d42\u5f15\u6570\u306bx\u3092\u6e21\u3059\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<pre><code>[LiveScript]\n\ndouble = -&gt; it * 2\n2 |&gt; double # =&gt; 4\n<\/code><\/pre>\n<pre><code>[JavaScript]\n\nvar double;\ndouble = function(it){\n  return it * 2;\n};\ndouble(2);\n<\/code><\/pre>\n<h4 style=\"border-bottom: solid 4px #73bc9b; margin-bottom: 30px; margin-top: 30px;\">4. \u6587\u5b57\u5217\u5316 \u300c\\\u300d<\/h4>\n<p>LiveScript\u3067\u306f\u300c\\\u300d(\u30d0\u30c3\u30af\u30b9\u30e9\u30c3\u30b7\u30e5)\u3092\u5024\u306e\u524d\u306b\u66f8\u304f\u3068\u3001\u6587\u5b57\u5217\u5316\u3057\u3066\u304f\u308c\u307e\u3059\u3002<\/p>\n<pre><code>[LiveScript]\n\n\\string\n<\/code><\/pre>\n<pre><code>[JavaScript]\n\n'string';\n<\/code><\/pre>\n<h4 style=\"border-bottom: solid 4px #73bc9b; margin-bottom: 30px; margin-top: 30px;\">5. \u914d\u5217 \u300c<[]>\u300d<\/h4>\n<p>\u914d\u5217\u3092\u300c&lt;[]>\u300d\u6f14\u7b97\u5b50\u3067\u8868\u73fe\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<br \/>\n\u6587\u5b57\u5217\u3068\u3057\u3066\u4ee3\u5165\u305b\u305a\u3068\u3082\u6587\u5b57\u5217\u5316\u3057\u3066\u304f\u308c\u307e\u3059\u3002<\/p>\n<pre><code>[LiveScript]\n\n[ string1 string2 string3 ] |&gt; console.log # =&gt; string1 is not defined\n\n&lt;[ string1 string2 string3 ]&gt; |&gt; console.log # =&gt; [\"string1\", \"string2\", \"string3\"]\n<\/code><\/pre>\n<pre><code>[JavaScript]\n\nconsole.log(\n[string1(string2(string3))]);\n\nconsole.log(\n['string1', 'string2', 'string3']);\n<\/code><\/pre>\n<h4 style=\"border-bottom: solid 4px #73bc9b; margin-bottom: 30px; margin-top: 30px;\">6. \u30ab\u30ea\u30fc\u5316 \u300c<code>(x, y)--><\/code>\u300d<\/h4>\n<p>\u30ab\u30ea\u30fc\u5316\u3092\u300c(x, y)-&#45;>\u300d\u3067\u8868\u73fe\u3059\u308b\u3053\u3068\u304c\u51fa\u6765\u307e\u3059\u3002<\/p>\n<pre><code>[LiveScript]\n\ntimes = (x, y) --&gt; x * y\ndouble = times 2\ndouble 2 # =&gt; 4\n<\/code><\/pre>\n<pre><code>[JavaScript]\n\nvar times, double;\ntimes = curry$(function(x, y){\n  return x * y;\n});\ndouble = times(2);\ndouble(2);\nfunction curry$(f, bound){\n  var context,\n  _curry = function(args) {\n    return f.length &gt; 1 ? function(){\n      var params = args ? args.concat() : [];\n      context = bound ? context || this : this;\n      return params.push.apply(params, arguments) &lt;\n          f.length &amp;&amp; arguments.length ?\n        _curry.call(context, params) : f.apply(context, params);\n    } : f;\n  };\n  return _curry();\n}\n<\/code><\/pre>\n<div style=\"text-align: left; padding: 10px 10px; border-color: #73bc9b; border-width: 0 0 1px 7px; border-style: solid; background: #F8F8F8;margin-top: 2em; margin-bottom: 2em;\">\n<h3 style=\"text-align: left;\">prelude.ls\u3068\u306f\uff1f<br \/>\n<\/h3>\n<\/div>\n<p>LiveScript\u306b\u306fHaskell\u306ePrelude\u306b\u3061\u306a\u3093\u3067\u3001<br \/>\n<a href=\"http:\/\/www.preludels.com\/\" target=\"_blank\" rel=\"nofollow\">prelude.ls<\/a>\u3068\u3044\u3046\u95a2\u6570\u30e9\u30a4\u30d6\u30e9\u30ea\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<p>\u4e0b\u8a18\u306e\u30b3\u30de\u30f3\u30c9\u3067\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<pre><code>npm install prelude-ls\n<\/code><\/pre>\n<p>\u3053\u3061\u3089\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u4f7f\u7528\u3059\u308b\u3068\u7c21\u5358\u306b\u914d\u5217\u306e\u64cd\u4f5c\u3092\u884c\u3048\u305f\u308a\u3057\u307e\u3059\u3002<\/p>\n<div style=\"text-align: left; padding: 10px 10px; border-color: #73bc9b; border-width: 0 0 1px 7px; border-style: solid; background: #F8F8F8;margin-top: 2em; margin-bottom: 2em;\">\n<h3 style=\"text-align: left;\">prelude.ls\u3092\u4f7f\u3063\u3066FizzBuzz\u3092\u66f8\u3044\u3066\u307f\u3088\u3046<\/h3>\n<\/div>\n<p>LiveScript\u306e\u8a18\u6cd5\u3068prelude.ls\u3092\u6271\u3048\u308b\u3068\u3001<br \/>\nFizzBuzz\u3082\u7c21\u5358\u306b\u89e3\u304f\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<pre><code>[LiveScript]\n\nfizzbuzz = -&gt;\n  | it % (3 * 5) is 0 =&gt; \\FizzBuzz\n  | it % 3 is 0 =&gt; \\Fizz\n  | it % 5 is 0 =&gt; \\Buzz\n  | _ =&gt; it\n[1 to 30] |&gt; each fizzbuzz &gt;&gt; console~log\n<\/code><\/pre>\n<div style=\"text-align: left; padding: 10px 10px; border-color: #73bc9b; border-width: 0 0 1px 7px; border-style: solid; background: #F8F8F8;margin-top: 2em; margin-bottom: 2em;\">\n<h3 style=\"text-align: left;\">\u307e\u3068\u3081<\/h3>\n<\/div>\n<p>\u3044\u304b\u304c\u3067\u3057\u305f\u304b\uff1f<\/p>\n<p>LiveScript\u306e\u8a18\u6cd5\u304b\u3089prelude.ls\u306e\u3053\u3068\u307e\u3067<br \/>\n\u89e6\u308c\u3066\u3044\u304d\u307e\u3057\u305f\u3002<\/p>\n<p>\u4eca\u56de\u3001\u7d39\u4ecb\u3057\u305f\u8a18\u6cd5\u306f\u307b\u3093\u306e\u4e00\u90e8\u3067\u3059\u3002<br \/>\n\u307e\u3060\u307e\u3060\u52b9\u7387\u7684\u306a\u8a18\u6cd5\u304c\u3042\u308b\u306e\u3067\u3001prelude.ls\u306e\u30e9\u30a4\u30d6\u30e9\u30ea\u3068\u5171\u306b<br \/>\n\u5b66\u3093\u3067\u3044\u304d\u307e\u3057\u3087\u3046\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u958b\u767a\u52b9\u7387\u3092\u3042\u3052\u308b\u305f\u3081\u3001AltJS\u3092\u5229\u7528\u3055\u308c\u3066\u3044\u308b\u65b9\u306f\u591a\u3044\u306e\u3067\u306f\u306a\u3044\u3067\u3057\u3087\u3046\u304b\uff1f AltJS\u3067\u306f\u3001TypeScript\u3084CoffeeScript\u306a\u3069\u304c\u6709\u540d\u3067\u3059\u306d\u3002 \u4eca\u56de\u306f\u305d\u306eAltJS\u306e\u4e2d\u304b\u3089LiveScript\u3068\u3044\u3046\u8a00\u8a9e\u3092\u7d39\u4ecb\u3057\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n","protected":false},"author":1,"featured_media":2953,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[27],"tags":[],"acf":false,"_links":{"self":[{"href":"https:\/\/sitest.jp\/blog\/wp-json\/wp\/v2\/posts\/2948"}],"collection":[{"href":"https:\/\/sitest.jp\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sitest.jp\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sitest.jp\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sitest.jp\/blog\/wp-json\/wp\/v2\/comments?post=2948"}],"version-history":[{"count":22,"href":"https:\/\/sitest.jp\/blog\/wp-json\/wp\/v2\/posts\/2948\/revisions"}],"predecessor-version":[{"id":14250,"href":"https:\/\/sitest.jp\/blog\/wp-json\/wp\/v2\/posts\/2948\/revisions\/14250"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sitest.jp\/blog\/wp-json\/wp\/v2\/media\/2953"}],"wp:attachment":[{"href":"https:\/\/sitest.jp\/blog\/wp-json\/wp\/v2\/media?parent=2948"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sitest.jp\/blog\/wp-json\/wp\/v2\/categories?post=2948"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sitest.jp\/blog\/wp-json\/wp\/v2\/tags?post=2948"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}