【Erlang】プログラム言語 Elixir 【BEAM】 [転載禁止]©2ch.net
Erlangの仮想環境(BEAM)上で動作するプログラミング言語 Elixirを語りましょう。
公式
http://elixir-lang.org >>167
>rubyスタイルのブロックは関数型プログラムを容易にする
LispやMLの方が遥かに容易だということだと思われ。 リアルタイムWebの時代にElixirが来る?Qiita高橋侑久氏が今注目する技術領域 最近、Elixir関連のブログ記事が多くなってきたな。
ブームきてる? Erlangの文法が古めかしくて、Elixirの文法がモダンでとっつきやすい、とは……
かつてはbegin-endの方が古めかしくて、Erlangの方がモダンだったんですけどね >>176
Prologがモダンだった時代はそれほど遠い昔ではない(遠い目 >>154
Elixir使おうかと思ってたけどこれは酷い。 ∧∧
(*・ω・) 仕様が安定したら起こしてくれよ・・・
_| ⊃/(___
/ └-(____/
 ̄ ̄ ̄ ̄ ̄ ̄ ̄
<⌒/ヽ-、___
/<_/____/ Qiitaがelixirネタで溢れかえってきたなw 無理やり流行らせたい奴がいるけど流行らないよ
php|ruby,scala,nodejs|golangで十分
elixirが必要な規模のサイトなんてごく一部なのに そういうクソ言語で書きたくないというだけで十分な理由になる Tsst
  0x20 | | 普通の半角スペース
  0xC2A0 | | そこでは改行しないスペース
    0xE28082 | | n と同じ幅のスペース
    0xE28083 | | m と同じ幅のスペース
    0xE28089 | | 細い空白
n/a ​ 0xE2808B || ゼロ幅スペース
  0xE28080 まさかのElixir Advent Calendar が立ち上がってたw
ここのスレの住民も誰か参加しろよw
Elixir Advent Calendar 2015
http://qiita.com/advent-calendar/2015/elixir-lang Enum.each を途中で中断するときの break 方法が判らんぬ Elixir を一言でいうと
型チェックのある Ruby
みたいな認識であってる? それはCrystalだろ
Elixirは構文が少しだけRuby風に見えないこともないだけのErlangだ >>203
別解として、Enum.takeやtaleWhileで必要な分だけ絞ってから、Enum.eachに渡すってのはどうかな? v1.2 キタ━━━━(゚∀゚)━━━━!!
今年はElixir一色になるな。
Ruby on RailsのコミッタであるJosé Valim氏は、Erlangの仮想環境であるBEAM上で動作する、オープンソースの関数型言語「Elixir v1.2」を、1月3日(現地時間)に公開した。 おお、これでconstてんこ盛りでながったらしい宣言だらけでうんざりするC++から解放されるのか!!!! この言語の適用範囲でC++使ってたの?
アホまる出しだね p = Path.join [System.cwd, "hoge.txt"]
IO.puts p
if File.exists?(p), do: :ok = File.rm!(p)
if File.exists?(p), do: IO.puts("oops!"), else: IO.puts("deleted")
ここまでは期待通り動いてたんだが
最後の行を
if File.exists?(p), do: :ok = File.rm!(p)
if File.exists?(p), do: IO.puts "oops!", else: IO.puts "deleted"
とやるとスルーされてなにも表示されなくなったんだ
警告もエラーも何も出ないのはなんとかならんかなー if の else のところに true 書かされるのは確かにきもい 新年早々人がいるみたいなので質問です。
defmodule Hoge do
def mainLoop win do
receive do
msg ->
:io.format "Got event ~p~n", [msg]
mainLoop win
after 1000 ->
:io.fwrite "."
mainLoop win
end
end
def start do
:wx.demo
:wx.new
f = :wxFrame.new :wx.null, -1, :erlang.binary_to_list "Hoge", [{:size, {1024, 768}}]
:wxFrame.connect f, :close_window
:wxWindow.show f
mainLoop f
:wx.destroy
end
end
Hoge.start
これで一応動作するのですがdemoのwindowを閉じてもmessageをreceive出来ません
どうすればdemoが閉じられたことを検出出来ますか? f = :wxFrame.new :wx.null, -1, :erlang.binary_to_list "Hoge", [{:size, {1024, 768}}]
ここは、
f = :wxFrame.new :wx.null, -1, :erlang.binary_to_list("Hoge"), [{:size, {1024, 768}}]
の間違いでした。
あとdemoを閉じるときは右上の[X]とかではなくてメニューでQuitしたときの話です。 >>208
そんな事言われても困るわ
うちの会社ApacheとC++だけでWebアプリ書くのが仕事なんだぜ
Erlangの頃からずっと気になってたけど記述性のせいで排除されたのがようやっとジェネリックに羽ばたける機会得た気持ちを押さえ切れないんだぜ!! >>215
そんな会社がこの言語を採用するとは思えん
Pythonあたりで我慢しときなさい >>215
C++もクソレガシーなやつならErlangの方が良いな
つかApacheとC++って某ニコ動の会社? ニコニコはErlangで動いてるよ
実際にホットスワップとかしてる 本家で電子版(だけかわからないけど)Programming Elixir買った人にアップデートクーポンがメールできてるとおもうけど、利用期限が3月までみたいなのでお忘れなく。
https://pragprog.com/book/elixir12/programming-elixir-1-2 PFIは、c++でwebフレームワーク作ってたね。 でも正直型は欲しいナリ
型エラーで死なれても困るナリ haskell面白そうって思ったけど
なんかあれでwebアプリを作るところまで持っていける気がしなかったので、
手軽にパターンマッチング楽しめるelixirに手を出すことにしました。
事実上のデファクトスタンダードなWAFがあるのがいい。 phoenixのコード見ててわかんないところがあったんですが
def accepts(conn, [_|_] = accepted) do
ってところの [_|_] = acceptedってどういう意味何ですか?
https://github.com/phoenixframework/phoenix/blob/v1.1.2/lib/phoenix/controller.ex#L859 >>223
acceptedは
headとtailの値はなんでもいいけど(_でマッチして値は参照してないので)
リストじゃないといけない
というパターンマッチ
つまり引数に対する制約 ついでなので
_ = accepted
[_] = accepted
[] = accepted
全部 [_|_] と違うものに(も) match する >>224 - 225
回答頂きありがとうございます。そういう書き方もあるんですねー。
ガード構文使っても良さそうな気もしましたけど
例:
def accepts(conn, accepted) when is_list(accepted) do
これだとlist内の要素数を規定できないってことなんすかね。 >>226
慣れたらパターンマッチの方が読むの早いよ
30年位前からある記法だからこの際覚えよう
古代言語だとProlog, 現役だとHaskel, Scala
Prolog以外は微妙に記号が違うけどね [H|T] = accepted の要素数の方が重要で値は何でも良いっていうバージョンだと思うけど
[H|T] の暗黙の了解の部分は知ってないとイミフだよね tutorialに書いてある事なので知らない方がおかしい >>230
すんません
Web+DB pressのelixirの文法回を観ただけでphoenixに入門してます。
おすすめのチュートリアルとかあるようでしたら教えて下さい。
とりあえず、追加で
https://elixirschool.com/jp/を観た後に
Programming Elixirをちょっとずつ読み進めてるくらいです。
日本語で書かれたいいチュートリアルがあればいいんですけど >>232
せめて1章とか読めないと辛いっす。
目次も単純すぎて怖い >>231
230だが本家のgetting-started
英語読めなきゃサンプルコードだけ見てもOK
というか但し書きなきゃ当然本家のだろ >>227
>>>226
>慣れたらパターンマッチの方が読むの早いよ
そういう問題じゃないだろ
意味が違うんだから
>>226 は
>ガード構文使っても良さそうな気もしましたけど
>def accepts(conn, accepted) when is_list(accepted) do
>これだとlist内の要素数を規定できないってことなんすかね。
と聞いてる訳で
>>227 は
>>226 に対する返答としては不適切 >>238
何でもそうだけど一次ソースを見るのが一番良いと思う
マイナー言語は進化も早いし情報もすぐ古くなるし
かえってノイズになる
ここで紹介されてる日本語訳もどこまで通用するかわからんし
すれ違いスマソ >>240
最初のとっかかりなら日本語文献でも構わないのでは?
後で差分を追えばいいし、仕様変更と言っても言語そのものが大きく変わるなら
メジャーバージョン変えるだろうし。 elixirでおすすめのエディターあります?
今はvisudalStudioCode使っていますが。動的言語だからあんまり補完機能は期待してないんですが、
モジュールと関数補完くらいは動いて欲しいところ ErlangのrecordをElixirで受け取りたいんだけど
パターンマッチで
#hoge{fuga=#hage{suka=Val}} when Val=pontan -> 略
みたいに受け取ってたのはElixirではどう書けばいい? Mix.Tasksで実行すると、configに書いたloggerのフォーマットが適用されないのはなぜなのか elixirのコードを読むときにmacroの部分を実際のコードに展開して、
意味がわかりやすくなるようなツールってありませんか? Phoenixでgraceful restartってどうやればいいですか? 匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、
BitTorrentがオープンソースで開発されています
言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?
Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
https://twitter.com/Lyrise_al
ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw
The Covenant Project
概要
Covenantは、純粋P2Pのファイル共有ソフトです
目的
インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します
特徴
Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)
接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります)
検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません
r プログラミングElixir
http://shop.ohmsha.co.jp/smartphone/detail.html?id=000000004675
商品詳細情報
Elixir(エリクサー)は、並行処理を得意とするプログラミング言語ErlangのVM(エンジン部分)を基盤とし、
Erlangよりもなじみやすい文法を採用したプログラミング言語です。
本書は、世界的なRubyプログラマであるDave Thomas氏が書いた、プログラミング言語Elixirの本格的解説書、“Programming Elixir” (Pragmatic Bookshelf, 2014) の翻訳書です。
通常のプログラミングから、並行処理、さらなる応用へと順を追って進む構成になっています。
本書を読むことで、Elixirらしいプログラミングを学ぶことができます。
第1章 赤いピルをとれ
第1部 伝統的なプログラミング
第2章 パターンマッチング
第3章 不変性
第4章 Elixir基礎
第5章 匿名関数
第6章 モジュールと名前付き関数
第7章 リストと再帰
第8章 マップ、キーワードリスト、セット、構造体
第9章 寄り道:型とは何か?
第10章 コレクションの処理 - EnumとStream 第11章 文字列とバイナリ
第12章 制御フロー
第13章 プロジェクトを構成する
第2部 並行プログラミング
第14章 複数のプロセスを使う
第15章 ノード - 分散システムの要
第16章 OTP:サーバ
第17章 OTP:スーパーバイザ
第18章 OTP:アプリケーション
第19章 タスクとエージェント
第3部 より高度なElixir
第20章 マクロとコードの評価
第21章 モジュールのリンク:ビヘイビアとuse
第22章 プロトコル - ポリモルフィック関数 第23章 かっこいい機能いろいろ >Rubyユーザーにおすすめ
そうかなー
ElixirがRubyのようなポジションを得られなかったのはなぜか
http://developers.srad.jp/story/16/06/17/0827240/ >>253
原著は11月にProgramming Elixir 1.3がでるんだが >>253
> 発売日 : 2016年08月19日
もうすぐか。 >>258
ここにいる住民はもちろん原著も読んでるんだけど
日本語版はなんていうかコレクションみたいな感じで買ってるだけだろ 原著は1.0の完パケ出して、1か月以内ぐらいには1.2にアップデートしてた覚えが。
11月までにバージョンアップがあれば、またアップデートするのかな? Cloud9へElixirインストール
How to Run Elixir in Cloud9's IDE
1. Create a Cloud9 account. If you already have a Github account, just log in with that.
2. Click “Create a new workspace”.
3. Give it a name, say, “Elixir”.
4. Select the “Custom” template.
5. When the workspace loads, run the following commands in the console:
# For some reason, installing Elixir tries to remove this file
# and if it doesn't exist, Elixir won't install. So, we create it.
sudo touch /etc/init.d/couchdb
# Standard Ubuntu Elixir installation instructions
wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb
sudo dpkg -i erlang-solutions_1.0_all.deb
sudo apt-get update
sudo apt-get install elixir
【参考】http://blog.danielberkompas.com/elixir/2015/08/28/how-to-run-elixir-cloud9-ide.html キミはプログラミングelixirを買ったか?
1.2対応で良かった。