タグ

Haskellに関するsyoko_sasakiのブックマーク (26)

  • yaakaito のためのHaskellコードの読み方

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    yaakaito のためのHaskellコードの読み方
  • Yesodでファイルアップロード - じゃばらの手記

    Yesodにもだいぶ慣れてきました。慣れるまではなかなかコンパイルを通せず苦労しますが、コンパイルに通りさえすれば意図通りに動かないということはまずありません。 YesodはHaskellの素晴らしさを見事に受け継いでいるな、と感じます。 さて今回はファイルアップロードのTipsを。 ポイントはFileInfoという型と、fileAFormReq(Opt)関数です。 アップロードされたファイルはFileInfoで受け取ります。 input type="file"を構成するのは、fileAFormReq(Opt)関数です。 ハンドラの例。 module Handler.File where import Import import Data.Text (append) data FileForm = FileForm { file1 :: FileInfo , file2 :: Maybe

    Yesodでファイルアップロード - じゃばらの手記
  • orangeroster/Root.hs at 0fd87dab22cc4e08a602b826af9cd7f8b8e3494d · mikesteele81/orangeroster

    syoko_sasaki
    syoko_sasaki 2012/01/28
    , [yesod]
  • YBlog - Haskell web programming

    update: updated for Yesod 1.2 tl;dr: A simple Yesod tutorial. Yesod is a Haskell web framework. You shouldn’t need to know Haskell. Its efficiency (see Snap Benchmark & Warp Benchmark1). Haskell is an order of magnitude faster than interpreted languages like Ruby and Python2. Haskell is a high level language that makes it harder to shoot yourself in the foot than C, C++ or Java, for example. One o

  • Yesodにはまってると思いきやHaskellの文法にはまっていた - じゃばらの手記

    よくあるっちゃーよくあるんですが、Yesodを書いていてYesodの作法を理解していなくてはまっているのかと思いきや、実はHaskellの文法にやられていたという。 今回はこんなエラーが。 Handler/Bbs.hs:7:19: The first argument of ($) takes one argument, but its type `GGWidget master0 m0 ()' has none In the second argument of `($)', namely `do { setTitle "Bbs Index" } $ (widgetFile "bbs")' In the expression: defaultLayout $ do { setTitle "Bbs Index" } $ (widgetFile "bbs") In the expressio

    Yesodにはまってると思いきやHaskellの文法にはまっていた - じゃばらの手記
  • BDD on Haskell チュートリアル その1 : HUnit で TDD を

    すこし日が空いてしまったけど,BDD on Haskell チュートリアルの続き. 前回までのエントリーはこちら BDD on Haskell の為のディレクトリ構成を考える BDD on Haskell チュートリアル その0 今回は HUnit を使って,基的な TDD (BDD でなく) の進め方について. 例 商と,小数の余剰を返す関数 を定義してみる今回のチュートリアルで適当に「ある程度需要があって,あるとそれなりに便利なもの」として,Scheme の RSR6 で採択された div mod をやってみる. Haskell の mod についてHaskell の標準実装である mod rem は整数型しか受付けず,また返りも整数型なので,たとえば,JavascriptRuby のように小数の余剰を返すことは無い. $ ghci Prelude> :t mod -- mod

    syoko_sasaki
    syoko_sasaki 2012/01/04
    あとで試す
  • モバイルゲームの歴史を年代別にご紹介します。モバイルゲームの成長と今後について詳しく解説していきます。

    モバイルゲーム 物凄い勢いで勃興したモバイルゲーム業界は、いろいろな課題や問題に直面しながらも巨大化し、今日の時点でのスマートフォン向けゲームの市場へと継承されていきます。 モバイルゲーム歴史 2001 Javaアプリと3Dゲームの登場 Javaが利用できるようになったことにより、ダウンロード型のゲームが供給できるようになりました。 2002 携帯電話端末の大容量化・3D化競争 Java搭載携帯電話端末が登場してからごく僅か1年の間に、アプリのサイズに関しては10倍に広大化し、表現方法も2Dから3Dにシフトし始めました。J-PHONEは『ゼビウス』や『スペースハリアー』などといった昔のアーケードゲームを、ドコモはSIMCITYなどパソコンで世界的規模のヒットを飛ばしたゲームを主力商品としていました。 2003 モバイルゲームの一般化 メモリの制限が厳しいJava仮想マシン上ではなく、OS

  • BDD on Haskell チュートリアル その0

    前回の記事で Haskell で BDD する基的な構成は出来たので,これから実際に簡単なチュートリアルを書いてみる.あと HPC を Cabal に設定させてビルドテストからテストカバレッジレポートも生成させる要領もわかったので,そっちの準備等も書く その前に 前回の記事の追記公開したら,まさに「もっとスマートな方法ありますよ」という反応が.インターネットってすばらしい GHC 7.0.2 以降,Cabal 10.2 だと Test-Suite 指定が出来る自分の環境が GHC7.0.2 なのに cabal-install が 0.8.2 というあべこべな状態だったので,前回のような方法でしかビルド構成できなかったのだけど,元々,GHC 7.0.x 同梱の cabal-install 0.10.x 以降は exitcode-stdio でちゃんとテスト構成を指定する事ができる,とのこと

  • BDD on Haskell の為のディレクトリ構成を考える

    ひさしぶりの Haskell ネタ 2011/12/13 追記下の例で app.cabal の設定や Setup.hs の記述などの情報が古かったので,こちらも一読してください → BDD on Haskell チュートリアル その0 経緯Haskell でそれなりのプログラムを書いてみようとしたので,HUnit や QuickCheck を使って BDD でやろうとしたのだけど,How to write a Haskell program 以上の事を誰も書いてないし,HUnit や QuickCheck の実例を書いた日語圏のブログ記事も,その単体モジュールのテストのみ書いていて,肝心の全体テストを通しで実行するなどのネタが書かれていない. じゃあ実際に公開してるリポジトリでも見てみるかと思い,patchtag を見ても今度は公開してる人の殆どがテスト書くとかしてなかった.Haskel

  • エラー処理を書いてはいけない

    エラー処理を書いてはいけない田中英行 tanaka.hideyuki@gmail.com 2011/12/08 @PFIセミナー 自己紹介田中英行 (@tanakh, http://tanakh.jp) PFI社でプログラマやってますJubatuspficommon検索エンジンのコアエンジンHaskell愛好家msgpack / rpc / idlpeggy (パーザジェネレータ & QQ w/ AQ)Shu-thing (シューティングゲーム) / (Monadius メンテナ)今気になるパッケージは monad-controlLearn you a Haskell 鋭意翻訳中 (春頃発売予定) エラー処理を書いてはいけない日の概要エラー処理を抽象化しようというお話です 現在のエラー処理の抱える問題どのように解決するのか実際の例エラーは処理しなければならない エラー処理を書いてはいけな

  • モナドトランスフォーマーとmonad-control - maoeのブログ

    アドベントカレンダーのいいネタが無いなあと思っていたところ、ちょうど週末にあたらしいmonad-controlがリリースされたので、これを紹介したいなと思いました。 その前に、モナドトランスフォーマーというかっこいい名前の代物の話をちょっとだけしましょう。 モナドトランスフォーマーと例外処理 Haskellerの皆さんはきっと息をするかのように自然にモナドを使っていることと思います。標準で提供されているモナドは単機能なので、組み合わせたくなってきます。必然的に皆モナドトランスフォーマーに手を伸ばすわけです。実際のアプリケーションのコードを書くと、多くのモナドではベースモナドがIOになるでしょうから、今度は自作したカスタムモナドスタックでIOが投げる例外をハンドルしたくなるわけです。 ここでふとControl.Exception.catchの型をみると Prelude> :t Control

    モナドトランスフォーマーとmonad-control - maoeのブログ
  • 型クラスで tagless DSL メタプログラミング - keigoiの日記

    これは Haskell Advent Calendar 2011 の5日目の記事です。 去年も書きましたが、その記事はこちら → Haskell厨を6年やってる俺がOCamlを仕事で2ヶ月使ってみた - keigoiの日記 先日の記事 Haskell+タグレスな型付きDSLで楽々!C言語コード生成 - keigoiの日記 をちょっとブラッシュアップした。前回はコードについては全く説明しなかったので、改めて解説する。 おさらい HaskellやOCamlなどの関数型言語は、プログラミング言語の処理 ― 構文解析とコード生成 ― がとても得意だ。 大手のソフトウェア企業として知られる NTTデータも既存コードの処理 (構文解析〜リバースエンジニアリング) のために Haskell を使っているそうだ。 (函数プログラミングの集い2011より。インドに外注する部分もあるそう togetter 1

    型クラスで tagless DSL メタプログラミング - keigoiの日記
  • Haskellの講義に関するQ&A - あどけない話

    岡山大学で、関数プログラミングの講義を一コマ担当しました。資料は、函数プログラミングの集いで使った関数プログラミングの道しるべを流用しました。ちゃんと用意しなくて、講義を受けた学生には申し訳ないです。 講義内容に関して質問を頂きました。同じような疑問を持つ人も多いと思いますので、担当教官の許可を得てここに公開します。 永続データプログラミングの意義は分かったが,破壊しないと効率が悪いのではないですか.配列のような構造が世の中には多い気がします.メモリは足りなくなりませんか. 基的に永続と呼ばれているデータは、共有の効率が高く、しかも不要になった部分はすぐに GC に回収されます。また、GHC の GC はすごく優秀であることが知られています。 Haskell では、下位のレイヤーではデータを破壊できて、たとえば固定長のバッファーを使い回すといったことも可能です。ただ、それは普通のプログラ

    Haskellの講義に関するQ&A - あどけない話
    syoko_sasaki
    syoko_sasaki 2011/11/24
    たぶん多くのHaskell未経験プログラマがもつ疑問がたくさん回答されている。ぜひ読んで欲しい。
  • HakyllとpandocとMighttpdでサイトを作った話 - 純粋関数空間

    このページについて ページのフッタに書いてあるので、お気付きの方もいらっしゃるかと思いますが、 このページは Hakyllと Pandocと Mighttpdにて運用されています。 完全なソースコードを https://github.com/tanakh/tanakh.jp から参照できます。 HakyllとはHaskellによる静的ページ生成ツールで、 Jekyllにインスパイアされて作られたものだそうです。 JekyllがRubyによって書かれ、Rubyによってページの構造を記述するのに対して、 HakyllはHaskellによって書かれ、Haskellによってページの構造を記述します。 Pandocとはいろいろなドキュメントフォーマットのコンバータです。 Haskellで書かれています。さすがにもうHTMLを手で書きたくはない、 かついろいろなブログの独自のフォーマットなんて覚えてい

  • ファーストクラスIOと部品プログラミング - あどけない話

    Haskell 界隈では、生産者/消費者のモデルとして、Enumerator/Iteratee (EI)が流行っている。しかし、EI を理解するのは難しい。 そこでこの記事では、もっと簡単な生産者/消費者モデルを示す。EI は Enumerator が Iteratee に push する push 型だが、紹介するモデルは pull 型である。 僕が書いたEI のチュートリアル「A tutorial on the enumerator library」から例を取る。すなわち、UNIX の find コマンドを実装する。 命令型 find 命令型プログラミング言語から Haskell にやってきた初心者プログラマーなら、こんなコードを書くだろう。 import Control.Monad import Control.Applicative import Data.List import

    ファーストクラスIOと部品プログラミング - あどけない話
  • 還暦プログラマの挑戦(Haskell に挑む)

    Haskell Parsec, a fast combinator parser Introduction 2. Users guide 2.2 Sequence and choice 2.3 Predictive parsers 2.4 Adding semantics 2.5 Sequences and seperators 2.6 Improving error messages 2.7 Expressions 2.8 Lexical analysis 2.9 Receipts: Lexeme parsers and Reserved words Write Yourself a Scheme in 48 Hoursでお勉強を初めて、Parsecライブラリのインポートの話になって、インターネットで調べていたら、この記事にぶつかった。 どうも、こちらを先

    syoko_sasaki
    syoko_sasaki 2011/11/13
    parsecの解説
  • 「Haskell信者」にその素晴らしさを熱く語られたときの平和で適当なかわし方

    Haskellほど、ハマってる人と興味がない人との温度差が激しいものはないと言えるでしょう。 はまっている人の中には、「Haskell の素晴らしさをもっと広く伝えなければ!」と言う使命感を抱いて、 ことあるごとに啓蒙活動に励もうとする“信者”が少なくありません。 その博愛の気持ちは尊いといえば尊いのですが、勧められる側がさほど Haskellに興味がない場合は、 どう対処していいのか困ります。今日も全国各地で、 Haskell信者の熱い勧誘を受けて、 勧められる側が苦笑を浮かべているという構図が繰り広げられていることでしょう。 Haskellに興味がない側のあなたが、 そういう災難にあったときはどう対処すればいいのか。 信者の勧誘に対する平和で適当なかわし方を考えてみましょう。 「Haskell様」を否定するのは危険 程度の差こそあれ、「Haskell」を熱く勧めたがる信者の皆さんは、

  • Scala の内面を Haskell 化する話 - akihiro4chawonの日記

    Scala を使って Haskell 風の記述をしている例を時々見かけるけれど、徹頭徹尾 Haskell になっている例はあまり見掛けない。アプリケーションロジックだけ見れば同じなんだけれど、実際の内部動作は全然違っていたりする。そして、パフォーマンスが致命的に劣っていたりすると、悲しくてやりきれない気持ちになる。Scala は、当は出来る子なんですと。 そこで、Haskell っぽい記述に耐えうる Scala Library を整備していこうと思う。 循環無限リストの整備 Haskell の無限リストのつもりで Scala の Stream を使うと、こんな落とし穴が待ち受けている。 例えば、無限リストの第1000000*1000番目が欲しいとき、Haskellならば、メモリ不足にはならないんだけれど、 Prelude> repeat 42 !! (1000000*1000) 42Sc

    Scala の内面を Haskell 化する話 - akihiro4chawonの日記
  • Haskell でランダムな値を生成する System.Random

    1. System.Random のクラスと型 Haskell の標準ライブラリには、ランダムな値を生成するパッケージがある。 Haskell/Understanding monads – Wikibooks によると、 There is much research on constructing good pseudo-random number generators, but fortunately, the Haskell standard library module System.Random already implements a ready-to-use generator for us. System.Random には、二つのクラスと一つの型がある。 class RandomGen Random data StdGen RandomGen は、ランダムを生成するジェネレ

  • 正規表現ちっくなパーサーコンビネーター - あどけない話

    たとえば、論文を書いていて、図が文からちゃんと参照されているかを調べたいとします。LaTeX で書いているなら、\ref{} と \label{} の中の文字列を突き合わす訳です。正規表現を使えば、テキスト全体からこれらの文字列を抽出するのは簡単です。でも、Haskell から正規表現を使うのは、かっこ悪いなぁという気がします。そこで、Parsec を使って、以下のようなパーサーを定義します。 label :: Parser String label = string "\\label{" *> many1 (noneOf "}") <* char '}' さて、このパーサーが受理する部分を全部返すというパーサーコンビネーターを書く訳ですが、これが意外と難しい。というか、パーサーのことを深く理解してないと書けない気がします。という訳で、こんなのを書いてみました。 appear :: Pa

    正規表現ちっくなパーサーコンビネーター - あどけない話