タグ

ブックマーク / goropikari.hatenablog.com (5)

  • Julia - Terminal で 1文字ずつ入力を受ける (raw mode) - goropikariの備忘録

    環境 Julia v1.4.2 OS: ArchLinux read や readline を使うと EOF を入力 (Ctrl-D) したときや Enter を押したときにキーボードから入力したものを取得することができるが、何かしらのキーをタイプする度に入力を取得する方法を紹介する。 # ex.jl using REPL terminal = REPL.Terminals.TTYTerminal(get(ENV, "TERM", Sys.iswindows() ? "" : "dumb"), Base.stdin, Base.stdout, Base.stderr) function readChar(term) c = Char(read(term.in_stream, 1)[1]) println("$(c) $(Int(c))") return c end REPL.Termina

    Julia - Terminal で 1文字ずつ入力を受ける (raw mode) - goropikariの備忘録
  • Julia - Lisp を作る - goropikariの備忘録

    環境 Julia 1.1.1 初めての Lisp 作り 最近、Software Design (2017/05, 08, 09)で連載されていた五味さんの「人工知能時代の Lisp のススメ」を読んだので、Julia で Lisp を作ってみました。 とりあえず、五味さんの SDLisp を機械的に Julia に翻訳しただけなので全然 Julia っぽくはないですが、なんとか動くものを作ることは出来ました。 train.gomi.info github.com 機械的に翻訳しただけなので動くのは当然なのですが、実際に動くととても感慨深いです。 以前から何某かの言語処理系を作ってみたいとは思いつつも行動には移せていませんでしたが、ようやく言語処理実装未経験者から脱することができました。 実装している途中で mal というステップ・バイ・ステップで Lisp の実装を学べるものがあると知った

    Julia - Lisp を作る - goropikariの備忘録
  • Julia - 配列の実装について - goropikariの備忘録

    2つの配列を結合するときは何故 push! よりも append! が推奨されるのか? sizehint! を何故使うべきなのか? とかあたりの話。今回は一次元配列 (Vector) のみの話で、多次元配列は扱いません。 最近今更ながらデータ構造とアルゴリズムを勉強しているのですが、その手のを読むと, 配列はサイズが固定だけれども、各要素には でアクセスできる リストはサイズを可変にできるけれども、各要素へのアクセスは かかる*1 と書いてあります。 一方で Julia で配列と呼ばれているものは push! や pop! 使って自由に要素数変えることができるのでリストなのかと思いきや、ベンチマークを見る限り各要素へのアクセスは で行えるようなので配列のようでもあります。 配列とリストの良いとこ取りしているような性質を持っているけど、結局のところ Julia の配列って何なの?と疑問で夜

    Julia - 配列の実装について - goropikariの備忘録
  • Julia - 並列計算用のリダクション演算子を作る - goropikariの備忘録

    ふと「そういえば、Juliaのリダクション (reduction) は分かりづらかったなぁ」と思い出したので複数の変数をリダクションする方法と自前のリダクション演算子(reduction operator, reducer)の作り方について紹介します。 環境 Julia での for 文の並列化 そもそもリダクションって何? どの変数がリダクションされるの? 使えるリダクション演算子 複数の変数をリダクションする 自前のリダクション演算子を定義する 結論 終わりに 参考 環境 OS: ArchLinux Julia 1.1.0 Julia での for 文の並列化 Julia で手っ取り早く for 文を並列化する方法は for の前に @threads または @distributed をつけることです。(望みの結果を得られるかどうかは別にして) スレッド並列(スレッド並列では並列数を環

    Julia - 並列計算用のリダクション演算子を作る - goropikariの備忘録
  • Julia - run を使って Julia の中から Julia を実行する方法 - goropikariの備忘録

    環境 Julia 1.1.0 Julia の中から Julia を実行する Julia を使っていると、 Julia の中から run を使って Julia を起動したいと思うことがあると思います。 このように run(`julia ex.jl`) ただこの方法はすでに julia へ PATH が通っていれば良いのですが、万人が PATH を通しているわけではないので環境によっては動かないコードになってしまいます。そもそも Windows では実行ファイルの名前が julia.exe なのでそういう点でもこのコードは環境依存していて汎用性がありません。 自分しか使わないプログラムならこういう書き方でも良いですが、GitHub などに上げて他の人にも使ってもらいたい場合には適してはいません。 環境依存させずに正しく動作させるには以下のようにします。 run(`$(Base.julia_cm

    Julia - run を使って Julia の中から Julia を実行する方法 - goropikariの備忘録
  • 1