# include "erl_nif.h" typedef struct vector { int size; unsigned long *value; } VECTOR; int enif_get_big_num(ErlNifEnv *env, ERL_NIF_TERM term, unsigned *is_negative, VECTOR **value) { int tuple_arity; const ERL_NIF_TERM *tuple; if(__builtin_expect((enif_get_tuple(env, term, &tuple_arity, &tuple) == 0), 0)) { return 0; } if(__builtin_expect(tuple_arity != 2, 0)) { return 0; } if(__builtin_expect((
最初に この記事は備忘録です。 先日、fukuoka.exさんの fukuoka.ex#14:Elixir/Phoenixもくもく会~入門もあるよ に入門者枠として参加させて頂きました。 Elixir経験者枠の方々がもくもくされていた内容に 非常に感化され、私もあんな風なモノ作れるようになりたいなあと思った次第です。 さて、そのもくもく会において @piacere_ex さんが纏めて頂いております Excelから関数型言語マスターシリーズの1回目から実施しておりました。 Excelから関数型言語マスター1回目:行の「並べ替え」と「絞り込み」 が、環境の問題で3回目の途中で引っかかってしまい、やむなく時間制限いっぱいになっちゃいました。 その後家でいろいろ試行錯誤した結果なんとか乗り切ったのでその方法を纏めています。 元々の環境 Mac(10.13.6)にDocker for Macをインス
はじめてなElixir(12)いろんな方法で並行プロセスを作る(失敗編) が、やったこととうまくいっていないところも書いてくれているので手助けしやすい気がする。応援の気持ちをこめ、やりたいことができるように書いてみます。 プロセスの終了を捕まえる spawn_link でプロセスの終了を捕まえるで、何の反応もなくプロセスが終了しているように見えてしまいます。実はメッセージにプロセス終了のお知らせがきているのでした。 Process.flag(:trap_exit, true) を宣言したプロセスは、そのプロセスから spawn_link した先のプロセスが異常終了したときに メッセージ を受けとります。ですから receive do mes の mes を表示してみると内容が表示されているはずです。 メッセージの中身を表示するようにした差分です $ diff -w link10.orig.
前回の はじめてなElixir(11) ではプロセスを使って状態を表現するのをやってみました。関数型言語で状態を表現するのに「関数の評価の途中の状態」を使ったとも言えるかと思います。 プログラミング Elixir の14章にしたがって、プロセス間のいろんな関係を使う練習をしてみましょう。ちなみに今回は惨敗です。きっと spawn を spawn_link にしたり spawn_monitor に変えればすぐにできるんだろうなと甘く見てはじめましたが、うまく行きませんでした。せっかくですので晒しておきます。 プロセスが異常を起こすことを表現する これまでは値の計算だけだったので(0で除算でもしない限り)プロセスが吹っ飛んでしまう心配はありませんでした。ここでは意図的に異常を起こしてみます。 if(Enum.random(0..9) == 0, do: exit(:boom)) って行をサーバ
はじめてなElixir(11) で spawn を使って温度センサもどきを作ってみました。調子に乗って はじめてなElixir(12) で spawn_link や spawn_monitor に移行しようとして失敗しました。このままだと悔しいので、温度センサもどきをちょっとだけ改良します。 なんちゃって温度センサに履歴をもたせる はじめてなElixir(11) のプロセスは直前の値を関数の引数として持ち回っていました。これをリストにすれば、過去に得た値も全部センサ内に持っていることができます。 defmodule Temp1 do def pseudo_temp_sensor(temp) do receive do {sender, {:init, init_temp}} -> IO.puts("start of :init") send(sender, init_temp) pseud
Hastegaシリーズその1 Hastega(ヘイスガ: ElixirからのGPU駆動)シリーズ その1 |> ZEAM開発ログv0.1.0 Flow / GenStage による並列プログラミング入門 |> ZEAM開発ログv0.1.1 AI/MLを爆速にしたい! Flow / GenStage でGPUを駆動できないの? |> ZEAM開発ログv0.1.2 AI/MLを爆速にしたい! Flow のコードを OpenCL で書いてみる〜CPU編 |> ZEAM開発ログv0.1.3 AI/MLを爆速にしたい! Flow のコードを OpenCL で書いてみる〜GPU編 |> ZEAM開発ログv0.1.4 Python/NumPyとElixir/Flow一本勝負!ElixirはAI/ML業界に革命をもたらすか!? |> ZEAM開発ログv0.1.5 Elixir から Rustler でネイ
defmodule Asm do use Constants @name :max_int @value 0x7fff_ffff_ffff_ffff @name :min_int @value -0x8000_0000_0000_0000 @name :max_uint @value 0xffff_ffff_ffff_ffff @name :min_uint @value 0 @moduledoc """ Asm aimed at implementing an inline assembler. Currently, it provides the following: * `is_int64` macro that can be used in `when` clauses to judge that a value is within INT64. * `is_uint64` mac
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く