タグ

ブックマーク / bicycle1885.hatenablog.com (12)

  • Haskell Tips (文字列編) - りんごがでている

    この記事はHaskell Advent 2012のための記事です。(遅れてすいません(ヽ´ω`)) Haskellで実際にプログラムを書く上では、様々なパッケージにある型や関数を利用するのが不可避になります。 そういった便利ツールのうち文字列まわりについて調べたところを、Haskell最近始めたって人に紹介するのがこの記事の目的です。Haskell詳しい方には新しい発見は無いかもしれません。ごめんなさい。 この記事では、主に文字列に焦点を当てていますが、そのうちまた別のテーマでも書こうと思っています。 なお、前提としてるバージョンはHaskell Platform 2012.4.0.0と、それに付随するGHCやパッケージです。 OSも、Mac OS XやLinuxなどUNIX系の環境を想定しています。Windowsは持ってませんのでわかりません。ごめんなさい。 文字列 Haskellでは文

    Haskell Tips (文字列編) - りんごがでている
  • PythonistaのためのJulia100問100答 - りんごがでている

    この記事はJulia Advent Calendar 2014の12日目の記事だったはずのものです(遅れてすいません...)。 Pythonユーザーとしての自分に対して100問100答形式で気になるだろうことを列挙したものになっています。 全体は以下の様なセクションに分かれています。 Julia 環境 データ 技術計算 言語機能 文字列 / 正規表現 ファイル / IO システム プロファイリング / ベンチマーク / テスト ライブラリ Juliaのバージョンはv0.3系を基としていますが、開発中のv0.4の内容も必要に応じてコメントしています。 Julia Juliaってどういう言語なの? Juliaは高レベルでハイパフォーマンスな技術計算のための動的言語だよ。 構文はPythonユーザーならすぐに理解できるよ。 公式ウェブページはここ: http://julialang.org/

    PythonistaのためのJulia100問100答 - りんごがでている
    nfunato
    nfunato 2015/02/06
  • X分で学ぶJulia - りんごがでている

    2016/11/20 追記: この記事は内容が一部古くなっています。最新版はこちらを参照して下さい Julia Advent Calendar 2014 1日目の記事です。 まだまだJuliaは一般に知られていない言語ということもありまして、Juliaの基的な機能を最短で学ぶ記事を初日に書いた次第です。 X<30くらいだと思います。 バージョンはJuliaの最新リリース版であるv0.3系を基にしていますが、特に異なる点は次期バージョンであるv0.4に関しても触れています。 Juliaの公式サイトは The Julia Language で 、Juliaのバイナリは Julia Downloads から入手できます。 文法 百聞は一見にしかず。まずはJuliaのコードをざっと見てみましょう。 function mandel(z) c = z maxiter = 80 for n = 1:m

    X分で学ぶJulia - りんごがでている
  • Pythonのコマンドライン引数処理の決定版 docopt (あとJuliaに移植したよ) - りんごがでている

    Pythonをよく使う人にはよく知ってる人も多いのですが、docoptという便利ライブラリがあります。 docoptはargparseやoptparseのようなコマンドライン引数をパースするライブラリなのですが、その発想がコロンブスの卵なのです。 例えばPython標準のargparseだと、argparseのAPIを組み合わせてパーサを組み立てるわけです。するとパーサと一緒にヘルプも作ってくれて、"program --help"などとすると自動生成されたヘルプを表示してくれるようになります。 しかし、そのAPIを覚えるのが大変で、毎回ドキュメントを読まないと忘れちゃうわけです。 import argparse parser = argparse.ArgumentParser(description='Process some integers.') parser.add_argument

    Pythonのコマンドライン引数処理の決定版 docopt (あとJuliaに移植したよ) - りんごがでている
  • Juliaのデストラクター - りんごがでている

    Juliaのマニュアルを読むとコンストラクターの記述はちゃんとあるのですが、デストラクターに関しての記述が見当たりません。ググっても情報が出てこないようなので、ここにその方法を残しておきます。 JuliaにはC++の~ClassName()のようにデストラクター専用の関数はありませんが、コンストラクターの中でオブジェクトがGCされたときの処理を記述できます。 やり方は簡単で、Base.finalizer()関数がまさにオブジェクトが破壊された時の処理を登録するための関数ですので、これを使うわけです。 finalizer(x, function)はxが到達不可能になったときにfunction(x)を呼ぶ仕組みになっているため、functionに資源を解放するような処理を置いておけば良いことになります。 何かDBなどとの接続を管理する型Connectionの例で考えてみると、以下のように何かm

    Juliaのデストラクター - りんごがでている
  • 一体何番煎じか分かったもんじゃないけどMonadでStack (1) - りんごがでている

    前回のスタートHaskell第5回に触発されたので色々とモナドをいじっていこうっと♪~(´ε` ) おっと、触発されただけで別にマスターしてないので悪しからず。 まだ全然Monad理解してないのでツッコミなどあったら是非是非お願いします。 さて、状態を扱えるControl.Monad.Stateを使って基的なデータ構造であるStackを実装してみる。 ご存知のとおりHaskellには状態という概念がないので、Monadを使ってシミュレートするわけだ。 とりま、型だけ書いとけ 今回実装する関数は、C++のSTLにあるstackを参考にpush,pop,top,size,emptyの5種類 とりあえずまぁ、Stackを扱うState Monadの型をかいてみよう。 module Stack where import Control.Monad.State (State, get, put,

    一体何番煎じか分かったもんじゃないけどMonadでStack (1) - りんごがでている
  • 一体何番煎じか分かったもんじゃないけどMonadでStack (2) - りんごがでている

    前回の記事で作製した data Stack a = Stack a (Stack a) | Empty deriving (Show) type MonadStack a = State (Stack a) a で問題が発覚したから、ちゃんと直しましょう。名だたるHaskeller達に噴飯されないように。せめて失笑レベルまで持って行きたいな。 型変数追加 で何が問題かって言うと、MonadStackの型変数がaだけでStackに押し込む値の型も、MonadStackの操作で返る値の型も同じaだってこと。 じゃ、それぞれに別々の型変数を用意すればイイね。ってことで型変数bをMonadStackに追加で。 data Stack a = Stack a (Stack a) | Empty deriving (Show) type MonadStack a b = State (Stack a)

    一体何番煎じか分かったもんじゃないけどMonadでStack (2) - りんごがでている
  • Yesodチュートリアルの蛇足(3) - りんごがでている

    前回に引き続きYesodチュートリアルを先に進めていこう。 参考にしているチュートリアルはこちら Haskell web programming 今回は3章Mirrorをやってみる。 こんな入力フォームに"Hello Yesod!"と打つと、そのテキストとテキストをひっくり返した文字列を結合した文字が表示される。 ("Hello Yesod!"と入力した) 実装したコードを見てみると、Handler/Mirror.hsの中では次のように書かれている。 getMirrorR :: Handler RepHtml getMirrorR = do defaultLayout $ do $(widgetFile "mirror") これは、前回つくったEchoでも出てきているが、2つの"$"が登場している。 一つ目の$は関数に引数を適用するためのもの(中置演算子)で、カッコで代用できる。 だから、

    Yesodチュートリアルの蛇足(3) - りんごがでている
  • モナドトランスフォーマー・ステップ・バイ・ステップ(Monad Transformers Step By Step) - りんごがでている

    著者のMartin Grabmüller氏に許可をいただきましたので、 Haskellモナドトランスフォーマーのチュートリアルを翻訳したものを公開します。 タイポや誤訳、プログラムのミス等ありましたら、 Twitter宛@bicycle1885かコメント欄までご連絡頂けるとありがたいです。 元のテキストやプログラムは以下のリンクから得られます。 Monad Transformers Step by Step [2012/12/19] 誤りを多数訂正しました。id:qtamakiさん、ありがとうございます。 [2014/6/19] 誤りを2点訂正しました。id:daimatzさん、id:hitotakuchanさん、ありがとうございます。 Monad Transformers Step by Step Martin Grabmüller Oct 16 2006 概要(Abstract) この

    モナドトランスフォーマー・ステップ・バイ・ステップ(Monad Transformers Step By Step) - りんごがでている
  • JuliaTokyo #1 を開催しました - りんごがでている

    で(多分)最初のJuliaの勉強会 JuliaTokyo #1 を開催しました。イベントページはこちらです。 http://juliatokyo.connpass.com/event/6891/ 当日は40人ほどの参加者が集まり、いつの間にJuliaがそんなに一般化したんだという感じでしたが、Julia歴1週間とか当日の朝から始めましたというように、何処からかJuliaが熱いらしいとの噂を聞きつけてJuliaを使ってみようという新しいもの好きの人たちが多い印象でした。 私はパッケージの作り方についてお話をしてきた次第です。 以下は、それぞれの発表と私のひとこと感想です。 メインセッション Juliaのこれまでとこれから - @sorami Juliaの背景的な情報やどんなエコシステムになっているかを紹介していました。 JuliaPythonやRからユーザを取り込みつつ、共に進化してい

    JuliaTokyo #1 を開催しました - りんごがでている
  • Haskellのパッケージ管理について調べてみた - りんごがでている

    Haskellやって1年ちょっと経つわけですが、Haskellで使うpackageの管理についてよく知らなかったので色々調べてみました。 対象としては最近Haskellを始めた方やpackage管理についてよく知らないという方向けです、 packageを利用する側からの説明なので、作るにはどうしたらいいかは書いてません(`・ω・´)ゞ そして、やたら長いのです。 ちなみにghc-7.0.3で、OSはLinux Mintです。 packageって? packageはHaskellのライブラリを構成する一つのまとまりで、packageはいくつかのmoduleをまとめています。 moduleはだいたい.hs拡張子のHaskellプログラム1ファイルと対応していて、module Foo.Bar whereとファイルの上の方に書いてあるFoo.Barがモジュール名です。 Haskell Platfo

    Haskellのパッケージ管理について調べてみた - りんごがでている
  • Yesodチュートリアルの蛇足(1) - りんごがでている

    YesodというHaskell製のフレームワークがある。 近々O'ReillyからYesod(Haskell and Yesod)が出るらしいので、その前にちょっと触ってみようと思ったのでその記録を。 参考にしたチュートリアルは、 Haskell web programming 冒頭の紹介によると、膨大なリクエストをさばく能力はnode.jsなんかに比べても圧倒的に性能がいいらしい。 YesodでEchoサーバからデータベースを使ったBlogアプリケーションまで説明している。 このチュートリアルに沿ってやっていこう。何回かに分けてポストするかも! 前準備 GHC Haskell Platform この2つがとりあえず必要。ここから手に入るのでインストール。 私が試したバージョンはGHCが7.0.4 Haskell Platformが4.0.0だった。 パッケージのインストールに必要なので

    Yesodチュートリアルの蛇足(1) - りんごがでている
  • 1