Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

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で記述されていたので、 読み込みが…