2016-01-01から1年間の記事一覧

配列の配列から行列への変換

配列の配列を、行列に変換する方法がわからなかったのでメモ。 結果としては以下のようにすれば良いようです。 import Base.convert convert{T}(::Array{T,2}, x :: Array{Array{T,1},1}) = hcat(x...)' 今回学んだのは2点。一つは、型自体で多重ディスパッ…

Julia で scanl を使いたい

Julia で scanl に相当するものが見当たらなかったので、勉強がてら、考えてみました。foldl が参考になるのではないかと思ってソースを見てみたところ、以下のようになっています。 foldl(op, v0, itr) = mapfoldl(identity, op, v0, itr) mapfoldl(f, op, …

Julia で関数合成マクロをつくる

Julia は便利そうなのですが、Haskell から移ってくるとカッコの数が気になってきます。 せっかく Julia ではマクロが作れるので、関数合成を簡単に書けないかと考えてみました。一気に書くことができなかったので、関数列と引数を与えると合成した結果を返…

MATLABでカリー化

一度関数型プログラムの考え方に触れると、どの言語でも同じようなことがしたくなってしまいます。 MATLAB は便利ですが、当然関数型ではないので勉強がてらちょっとずつ自作しています。 その過程で、カリー化をしようとしてハマったのでメモ。結論からいう…

Stackの味見

他人事だと思っていた cabal hell についにはまったので、cabal から stack に乗り換えて見ることにしました。 brew uninstall ghc brew install ghc brew haskell-stack stack new test-proj cd ./test-proj vim ./test-proj.cabal # library の build-depe…

haskell での単位付き計算を味見

昔から計算ミスの多かった私は、高校時代に塾の先生に「次元の確認をするとよい」とアドバイスされて以来、必ず次元チェックをするようにしています。 市販ツールでは Mathcad が便利だと思うのですが、個人で購入するには少々高価です。どうにかならないか…

数値のリストををcsvファイルに出力する

Text.CSV を使えば csv ファイルを書き出せるのですが、String の要素にしか対応していません。数値であっても一度 String に変換しないといけないので、コードも結果も不格好です。 import Text.CSV putStrLn . printCSV $ fmap (fmap show) [[1,2,3], [4,5…

Text.CSV を使う

純粋型言語で副作用を許さないのなら、入出力はどうするの?と思っていた時期がありました。 細かい理屈はさておき、Haskell でもファイルの読み書きは出来ることがわかったので、書いておくことにします。使ったのは Text.CSV。最初に、ここで定義されてい…

答えはいくつあるのか?

数学の本を読んでいると、直感的でないと思えるような表現が出てくることが時々あります。今回は、「ある条件を満たすものがいくつあるか」という話です。 例えば、モノ射の定義は以下のように書かれています。 任意の圏Cにおいて、射 f : A → B が、 任意の…

可換

圏論の本を読んでいて、最初につまずいたのが「可換」という表現。 索引を見ると、「可換図式」というのはあるのですが、「可換」についての説明は意外にみつからないのです。 可換図式は、対象と対象が射でつながれている様子を示しています。で、可換とい…

明けましておめでとうございます。

2015年は、いくつかの巡りあわせのおかげで、趣味で数学をはじめた年でした。 本を読み、疑問をもち、解決して理解を深める、というプロセスを自分のペースで進められるのは、趣味として最適です。さらに、最近はネットでも数学愛好家の方々が面白い記事を上…