Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

livescript

livescriptを更に闇深く。prelude.lsで関数型の深淵を覗き見る その5:リスト・条件一致編

prelude.ls記事の続き、今回はリストから条件に一致する要素を抽出する関数です 実際のところ 条件が一致する要素からなるリストを返す 第一引数が正な要素を返す filter (< 3), [1 to 5] #=> [1, 2] filter even, [3, 4, 0] #=> [4, 0]負な要素が欲しいなら…

livescriptを更に闇深く。prelude.lsで関数型の深淵を覗き見る その4:リスト・要素抽出編

prelude.ls記事の続き、今回はリストから条件に一致する要素を抽出する関数です 実際のところ 引数なし 引数なしで手っ取り早く使う関数はhead、tail、initialがあります。 それぞれ、先頭一個、先頭を除いたもの、末尾一個を除いたものを返します。 head [1…

livescriptを更に闇深く。prelude.lsで関数型の深淵を覗き見る その3:リスト・基本関数編

prelude.ls記事の続き、今回はリストに適用される関数です。 関数型的拡張だと公式で主張しているだけあって、この部分は恐るべき個数…… 今回はRubyのEnumerator的挙動を取る関数を取り上げていきます。 実際のところ prelude.lsのEnumeratorモドキは Rubyで…

livescriptを更に闇深く。prelude.lsで関数型の深淵を覗き見る その3:文字列編

prelude.ls記事の続き、今回は数値に適用される関数です。 実際のところ よくあるやつ join "," [1 to 10] #>> '1,2,3,4,5,6,7,8,9,10' split "," '1,2,3,4,5,6,7,8,9,10' #>> [ '1', '2', '3', '4', '5', '6', '7', '8', '9', '10' ] capitalize 'hello wor…

livescriptを更に闇深く。prelude.lsで関数型の深淵を覗き見る その2:数値編

prelude.ls記事の続き、今回は数値に適用される関数です。 実際のところ よくあるやつ 最大値、最小値に切り上げ切り捨てと、 あると便利な数値系関数は一通り揃ってます。 平均値は、後で記事化するリストででてきます。 max 1 4 #>> 4 min 1 4 #>> 1 ceili…

livescriptを更に闇深く。prelude.lsで関数型の深淵を覗き見る その1:導入編

prelude.lsは prelude.ls is a functionally oriented utility library. とあるように、関数型な運用ができるlivescript向け*1の拡張ライブラリです。 ほとんどの関数はカリー化されてるとのこと。 カリー化自体はlivescriptで楽しく使うことが出来るので………

【自習中】List comprehensionなるもの

List comprehension……包括リストとでも訳すべきなんでしょうか? リストからリストを作るといった内容……のようです。 distinct from the use of map and filter functions. なんて書かれるように、mapやらフィルタやらを適用するものとは、明確に区別される…

livescriptで似た名前のkeyを定義するときちょっと便利な事

rubyでいうところの "#{hoge}fuga" #>> "hogefuga" みたいな感じで、文字列を格納した変数をkeyに組み込む事ができます。 たとえばこんな感じ。 foo = 'key' bar = {(foo): 5, "dyna#foo": 6} #=> {'key': 5, 'dynakey': 6}var1、var2みたいなkeyを延々と定…

livescriptの演算子を使って文字列や配列を操作

相変わらず頭がおかしいlivescriptさんは演算子まで使い倒して短文化を推し進めています。 知ってるとif-elseの構文がなくなったりするかも。 「*」オペレータ 常識的に考えれば、「*」オペレータは掛け算。 というわけで、まぁ次の挙動はなんとなく理解はで…

livescript基礎文法最速マスターという記事を書きました

社内ブログにlivescript基礎文法最速最速マスターという記事を書きました。LiveScript基礎文法最速マスター - MTMシステムズ Tech Blogblog.mtmsystems.jp基礎文法最速マスターのネタが流行ってから5年も経ったんですねぇ(遠い目

livescriptの条件判定文は程よく気色が悪い

livescriptにも、Rubyでいうところのcase文が存在します。直感的な記法は次の通り。 x = 2 str = switch x case 1 then "re:1" case 2 then "re:2" default "none"私のようなRuby文化圏の人間には気味の悪い構文なので coffeeScriptのように str = switch x …

livescriptで2と"2"を比較する際に使える記法

livescriptで2と"2"を比較する際、使える記法を紹介します。 文字を数値に転換 数値であれば、頭に+|-をつければ数値型に転換されます 2 == +'2' isとis not A is Bだの、A is not Bだのといった記述が可能です。 テストスクリプトかよって感じですが 2 is +…

livescriptにおける関数読み出しのショートカット

(.prop) is short for (it) -> it.prop. とあるように、関数呼び出しが滅茶苦茶短くなります。 これは単体で使うものではなく、mapやeach、sort-byのような高階関数をの合わせ技で効力を発揮します。 実際のところ idと年齢が格納されたデータを idでそーと …

livescriptのCurry化

中途半端に似通ったデータを使う際有用なCurry化ですが、Livescriptでも気軽に使えます。 実際のところ 例1:カンマ区切りCSVっぽい文字列 簡単な例として、カンマ区切りCSVっぽいデータを生成したい場合を考えます。 Curry関数は"-->"と、普段の関数定義よ…

livescriptのpiping記法はヤバさみがある

Javascriptはメソッドチェインみたいなことはできませんが、 livescriptではPiping記法を使って、なんやらそれっぽい記述ができます。 x = [1 2 3] |> reverse |> head #=> 3逆メソッドチェインとでもいうような奇妙なこともできます。 y = reverse <| [1 2 …

livescriptでもuptoやdowntoみたいなことができる

livescriptでもuptoやdowntoみたいなことができますデフォルトでは、1毎の加算です [1 to 10] #=> [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]by NUMで指定すれば、NUM毎の加算も可能 [1 to 10 by 2] #=> [ 1, 3, 5, 7, 9 ]downtoのときは、"by -NUM"で。 [10 to 0 …

livescriptで引数なし関数を書くときのアレコレ

livescriptには、引数なし関数を書くときの便利記法が備わっています。まず最も一般的と思われる記法は、 通常の"(args) ->"に変わり"!->"を使う方法。 f = !-> 'sampleFunc' f!これが、 var f; f = function(){ 'sampleFunc'; }; f(); こうなります。すぐに…

altJSの一、livescriptが実際恐ろしくて泣いた

livescriptはaltJSの類です。 現状、Wikipediaに雑な紹介記事がある位の知名度ですが、極めて強力なやつです。 私はcoffeeスクリプトですら恐ろしくて触れない軟弱者なのですが、 知人から受け取ったサンプルがlivescriptで記述されていたので、 読み込みが…