Elixir v1.1.1 Enum Provides a set of algorithms that enumerate over collections according to the Enumerable protocol: iex> Enum.map([1, 2, 3], fn(x) -> x * 2 end) [2, 4, 6] Some particular types, like dictionaries, yield a specific format on enumeration. For dicts, the argument is always a {key, value} tuple: iex> dict = %{a: 1, b: 2} iex> Enum.map(dict, fn {k, v} -> {k, v * 2} end) [a: 2, b: 4] N
Elixir はプロセス指向なだけあって、カジュアルに並列処理を使えます。 今回はこの並列処理を活用して、複数の勉強会サイトの WebAPI に対して一気にリクエストを投げる、いわゆるメタサーチ的な API を作ってみたいと思います。 Phoenix アプリケーションでの外部 API リクエストについてはコチラを参照してください。 事前準備: 各勉強会サイトの API 理解する ATND, Connpass, Zusaar, Doorkeeper のいずれも、アクセスキー無し(!)で利用できる WebAPI が用意されています。 大変ありがたいことに、これらの API については sharow さんが以下の記事にとても良くまとめてくださっていますので、こちらを参考にしたいと思います。 勉強会サイトのAPI比較 http://qiita.com/sharow/items/508bc876ff
Elixir では Stream モジュールを使って、遅延評価と無限リストを扱うことができるがそれによりエラトステネスのふるいを、Haskell と同じように無限リストを使った記述ができるか・・・というのが今回の試み。結果としては、カッとなれば、できる。 以下、Stream の解説も交えてお届けする。 Enumerable プロトコルと Enum および Stream Elixir の Enum モジュールには map/2 や filter/2 や zip/2 など、コレクション操作に必要な関数が多数実装されている。以下はそのドキュメントの例である。Functions のところに Enum の関数が列挙されているのが分かる。 ちなみにこのドキュメント閲覧は Dash の画面。自分は主に iOS 開発のドキュメント閲覧によく使っているが、見ての通り Elixir のドキュメント参照にも便利。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く