X



【Erlang】プログラム言語 Elixir 【BEAM】 [転載禁止]©2ch.net
0001 ◆9Zst2CqO/Y
垢版 |
2015/06/03(水) 21:58:20.67ID:ZW2Eui3i
Erlangの仮想環境(BEAM)上で動作するプログラミング言語 Elixirを語りましょう。

公式
http://elixir-lang.org
0189デフォルトの名無しさん
垢版 |
2015/11/01(日) 19:47:04.28ID:PByF+5ro
そういうクソ言語で書きたくないというだけで十分な理由になる
0190uy ◆Qawu9.2l1E
垢版 |
2015/11/02(月) 14:06:02.46ID:YzpIGAAp
Tsst

  0x20 | | 普通の半角スペース
      0xC2A0 | | そこでは改行しないスペース
      0xE28082 | | n と同じ幅のスペース
      0xE28083 | | m と同じ幅のスペース
      0xE28089 | | 細い空白
n/a ​ ​ 0xE2808B || ゼロ幅スペース
      0xE28080
0193デフォルトの名無しさん
垢版 |
2015/11/21(土) 10:02:02.97ID:p0TSIdpI
まさかのElixir Advent Calendar が立ち上がってたw
ここのスレの住民も誰か参加しろよw

Elixir Advent Calendar 2015
http://qiita.com/advent-calendar/2015/elixir-lang
0195デフォルトの名無しさん
垢版 |
2015/12/10(木) 11:22:41.77ID:gg94mj0B
[翻訳] Elixir - 次に来る大物Web言語 - Qiita
Whatsappは1サーバーあたり2百万の同時コネクションをこなしています。2百万コネクションをErlangが走る1台のサーバーで。
http://b.hatena.ne.jp/entry/qiita.com/HirofumiTamori/items/0dfdbada30c7d8f183fd

[翻訳] なぜ私はElixirに賭けたか
http://qiita.com/HirofumiTamori/items/2e4fd9e70e5358e34d98

Node.js Is Dead - なぜ私がNode.jsを捨ててElixirに切り替えたのか- // Speaker Deck
https://speakerdeck.com/fl4tlin3/node-dot-js-is-dead-nazesi-ganode-dot-jswoshe-teteelixirniqie-riti-etafalseka
0198デフォルトの名無しさん
垢版 |
2015/12/20(日) 16:21:29.87ID:8RLYRFXT
ああそう
0199デフォルトの名無しさん
垢版 |
2016/01/02(土) 10:51:16.18ID:5BhRuxop
Enum.each を途中で中断するときの break 方法が判らんぬ
0201デフォルトの名無しさん
垢版 |
2016/01/03(日) 13:30:36.20ID:kqqJl2FZ
それはCrystalだろ
Elixirは構文が少しだけRuby風に見えないこともないだけのErlangだ
0204デフォルトの名無しさん
垢版 |
2016/01/04(月) 01:14:57.42ID:cYvB3s6b
>>203
別解として、Enum.takeやtaleWhileで必要な分だけ絞ってから、Enum.eachに渡すってのはどうかな?
0205デフォルトの名無しさん
垢版 |
2016/01/04(月) 12:22:35.92ID:uh/Y4MEw
>>36
あるあるktkr

ifがキモい
0206デフォルトの名無しさん
垢版 |
2016/01/04(月) 18:03:17.37ID:re70kwTT
v1.2 キタ━━━━(゚∀゚)━━━━!!
今年はElixir一色になるな。

 Ruby on RailsのコミッタであるJosé Valim氏は、Erlangの仮想環境であるBEAM上で動作する、オープンソースの関数型言語「Elixir v1.2」を、1月3日(現地時間)に公開した。
0207デフォルトの名無しさん
垢版 |
2016/01/05(火) 05:13:32.39ID:6GG4/tqm
おお、これでconstてんこ盛りでながったらしい宣言だらけでうんざりするC++から解放されるのか!!!!
0209デフォルトの名無しさん
垢版 |
2016/01/05(火) 12:49:18.89ID:L7c5HugA
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"

とやるとスルーされてなにも表示されなくなったんだ
警告もエラーも何も出ないのはなんとかならんかなー
0211デフォルトの名無しさん
垢版 |
2016/01/06(水) 13:44:50.53ID:yluT1kPN
新年早々人がいるみたいなので質問です。

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が閉じられたことを検出出来ますか?
0212デフォルトの名無しさん
垢版 |
2016/01/06(水) 14:09:19.42ID:yluT1kPN
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したときの話です。
0215207
垢版 |
2016/01/07(木) 18:44:19.83ID:DCQzRipJ
>>208
そんな事言われても困るわ
うちの会社ApacheとC++だけでWebアプリ書くのが仕事なんだぜ

Erlangの頃からずっと気になってたけど記述性のせいで排除されたのがようやっとジェネリックに羽ばたける機会得た気持ちを押さえ切れないんだぜ!!
0218デフォルトの名無しさん
垢版 |
2016/01/07(木) 22:21:23.95ID:kbOQ2XId
ニコニコはErlangで動いてるよ
実際にホットスワップとかしてる
0222デフォルトの名無しさん
垢版 |
2016/01/10(日) 18:55:50.40ID:isYkwNcj
haskell面白そうって思ったけど
なんかあれでwebアプリを作るところまで持っていける気がしなかったので、
手軽にパターンマッチング楽しめるelixirに手を出すことにしました。
事実上のデファクトスタンダードなWAFがあるのがいい。
0224デフォルトの名無しさん
垢版 |
2016/01/15(金) 11:01:32.37ID:CRSduh9Q
>>223
acceptedは
headとtailの値はなんでもいいけど(_でマッチして値は参照してないので)
リストじゃないといけない
というパターンマッチ
つまり引数に対する制約
0225デフォルトの名無しさん
垢版 |
2016/01/15(金) 11:56:03.35ID:NW8jpekK
ついでなので
_ = accepted
[_] = accepted
[] = accepted
全部 [_|_] と違うものに(も) match する
0226デフォルトの名無しさん
垢版 |
2016/01/15(金) 19:30:34.91ID:uzY6d77k
>>224 - 225
回答頂きありがとうございます。そういう書き方もあるんですねー。
ガード構文使っても良さそうな気もしましたけど
例:
def accepts(conn, accepted) when is_list(accepted) do

これだとlist内の要素数を規定できないってことなんすかね。
0227デフォルトの名無しさん
垢版 |
2016/01/15(金) 21:22:38.38ID:EuNWEiBo
>>226
慣れたらパターンマッチの方が読むの早いよ
30年位前からある記法だからこの際覚えよう
古代言語だとProlog, 現役だとHaskel, Scala
Prolog以外は微妙に記号が違うけどね
0229デフォルトの名無しさん
垢版 |
2016/01/16(土) 15:17:24.71ID:CPZavs1f
[H|T] = accepted の要素数の方が重要で値は何でも良いっていうバージョンだと思うけど
[H|T] の暗黙の了解の部分は知ってないとイミフだよね
0231デフォルトの名無しさん
垢版 |
2016/01/17(日) 14:06:59.31ID:no2woK8b
>>230
すんません
Web+DB pressのelixirの文法回を観ただけでphoenixに入門してます。
おすすめのチュートリアルとかあるようでしたら教えて下さい。

とりあえず、追加で
https://elixirschool.com/jp/を観た後に
Programming Elixirをちょっとずつ読み進めてるくらいです。
日本語で書かれたいいチュートリアルがあればいいんですけど
0235デフォルトの名無しさん
垢版 |
2016/01/18(月) 02:42:34.21ID:XM4mBu50
>>231
230だが本家のgetting-started
英語読めなきゃサンプルコードだけ見てもOK
というか但し書きなきゃ当然本家のだろ
0236デフォルトの名無しさん
垢版 |
2016/01/18(月) 10:47:56.39ID:e3HkPcDC
>>227
>>226
>慣れたらパターンマッチの方が読むの早いよ

そういう問題じゃないだろ
意味が違うんだから

>>226
>ガード構文使っても良さそうな気もしましたけど
>def accepts(conn, accepted) when is_list(accepted) do
>これだとlist内の要素数を規定できないってことなんすかね。
と聞いてる訳で

>>227
>>226 に対する返答としては不適切
0240デフォルトの名無しさん
垢版 |
2016/01/19(火) 18:14:31.79ID:wvDRZZ+k
>>238
何でもそうだけど一次ソースを見るのが一番良いと思う
マイナー言語は進化も早いし情報もすぐ古くなるし
かえってノイズになる
ここで紹介されてる日本語訳もどこまで通用するかわからんし
すれ違いスマソ
0241デフォルトの名無しさん
垢版 |
2016/01/19(火) 20:39:41.66ID:dTrbcQZg
>>240
最初のとっかかりなら日本語文献でも構わないのでは?
後で差分を追えばいいし、仕様変更と言っても言語そのものが大きく変わるなら
メジャーバージョン変えるだろうし。
0242デフォルトの名無しさん
垢版 |
2016/01/20(水) 20:53:59.18ID:xrqpD1Un
elixirでおすすめのエディターあります?
今はvisudalStudioCode使っていますが。動的言語だからあんまり補完機能は期待してないんですが、
モジュールと関数補完くらいは動いて欲しいところ
0244デフォルトの名無しさん
垢版 |
2016/01/21(木) 12:33:31.15ID:zpe1QHZ3
ErlangのrecordをElixirで受け取りたいんだけど
パターンマッチで
#hoge{fuga=#hage{suka=Val}} when Val=pontan -> 略
みたいに受け取ってたのはElixirではどう書けばいい?
0245デフォルトの名無しさん
垢版 |
2016/02/18(木) 15:50:50.26ID:B8Z0X3BJ
Mix.Tasksで実行すると、configに書いたloggerのフォーマットが適用されないのはなぜなのか
0248デフォルトの名無しさん
垢版 |
2016/02/22(月) 16:40:37.11ID:2HiyJIgg
elixirのコードを読むときにmacroの部分を実際のコードに展開して、
意味がわかりやすくなるようなツールってありませんか?
0251デフォルトの名無しさん
垢版 |
2016/04/11(月) 09:06:22.67ID:pH222naU
Phoenixでgraceful restartってどうやればいいですか?
0252デフォルトの名無しさん
垢版 |
2016/05/01(日) 13:49:02.80ID:tKi6j9CT
匿名通信(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的に分散され、特定のサーバーに依存しません
0253デフォルトの名無しさん
垢版 |
2016/07/01(金) 08:20:12.02ID:ah3ORdvZ
プログラミング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章 かっこいい機能いろいろ
0257207
垢版 |
2016/07/02(土) 10:33:10.57ID:wOG82f10
>>253
電子版は同時じゃないのか
0258デフォルトの名無しさん
垢版 |
2016/08/06(土) 07:09:49.58ID:QbakpjAH
>>253
原著は11月にProgramming Elixir 1.3がでるんだが
0260デフォルトの名無しさん
垢版 |
2016/08/06(土) 13:34:35.82ID:0gT1apGa
>>258
ここにいる住民はもちろん原著も読んでるんだけど
日本語版はなんていうかコレクションみたいな感じで買ってるだけだろ
0261デフォルトの名無しさん
垢版 |
2016/08/07(日) 00:58:03.08ID:dWKOByb7
原著は1.0の完パケ出して、1か月以内ぐらいには1.2にアップデートしてた覚えが。
11月までにバージョンアップがあれば、またアップデートするのかな?
0268デフォルトの名無しさん
垢版 |
2016/08/09(火) 22:12:54.85ID:wDq4bKHM
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
0270207
垢版 |
2016/08/18(木) 22:45:34.19ID:drzfRPPB
>>269
電子版待ちなのであるよ
紙の本は裁断してScansnapするのが手間だし、画像PDFじゃまともな検索できないし
0274デフォルトの名無しさん
垢版 |
2016/08/21(日) 11:14:32.10ID:72zLWHSO
宣伝uzee
0276270
垢版 |
2016/08/21(日) 23:58:25.17ID:5jhCQvfg
>>271
電子版出てたので買ったよ
でもこれPDF版ダウンロードできなかった
かつmobiもepub版も固定レイアウトで文字拡大ができないのね orz
#ちっさい端末だとちと読みにくいです
0277デフォルトの名無しさん
垢版 |
2016/08/22(月) 01:18:38.67ID:d5DQ07MM
おれは書籍版を買った。
英語版は電子版だったけど途中までしか読めなかったから読みやすくて助かる
0278デフォルトの名無しさん
垢版 |
2016/08/28(日) 12:14:53.20ID:jyC+SeSp
英語版「Programming Elixir 1.0」をPragProgで購入して1.2まで無料アップデートが続いていたんだけど、さすがに今回は無料はないかと思いつつもPragProgにログインしたら、1.3も無料アップデートのクーポンがあった。嬉しい。
0281デフォルトの名無しさん
垢版 |
2016/08/31(水) 13:46:33.14ID:NHF24EVE
https://forums.pragprog.com/forums/449/topics/14507
以前、作者が1.3と次は別扱いになるとあって、1.3買うつもりだったが、
いま見たら、1.3アップデート出来るようなこともかいてある。

ただこのフォーラムは、サポートの個別対応をする場ではなく、
状況としては、サポート側が一貫した対応できてないみたいようなので、
アップデート権利が来てない場合に確認したかったら、まずサポートに連絡する必要がある。
0283デフォルトの名無しさん
垢版 |
2016/09/09(金) 11:53:33.68ID:ZufuCknD
馬鹿除けに効果覿面
0287デフォルトの名無しさん
垢版 |
2016/10/06(木) 12:33:20.70ID:Yw0Cruyw
Linux API を、Windows API に変換するので、Ubuntu64 のバイナリがそのまま動く、
Windows Subsystem for Linux (WSL) で、Elixir をやっている人いる? 調子はどう?

apt-get で、パッケージもインストールできる

日本語も使える端末、ConEmu。
GUI表示用のXサーバー、Xming X Server for Windows
0289デフォルトの名無しさん
垢版 |
2016/12/21(水) 00:41:32.11ID:DAWAuc9g
エリクソン的に電力効率上げろとかなって
BEAMをパフォーマンスにもがんばっちゃったりして
レスを投稿する


ニューススポーツなんでも実況