タグ

haskellに関するsyohexのブックマーク (19)

  • Haskellでポーカーを作ろう〜第二回 ポーカー・ハンドの判定をする 前編〜 - Creatable a => a -> IO b

    はいはいどーも、皆さん進捗どうですか? 毎度おなじみのちゅーんさんですこんにちは。 この記事は、ちゅーんさんの連載エントリ「Haskellでポーカーを作ろう」の第二回目です。 第一回 リストのシャッフルとカードの定義 今回から2〜3回にわけて、ポーカー・ハンドを判定する処理を作っていきます。 若干ややこしい部分も含みますので、一つ一つ確実に理解しながら進めていきましょう。 尚、この記事では各ポーカーハンドの説明は行いません。 ↓↓↓覚えてないよーって人は、Wikipediaを見ときましょう↓↓↓ http://ja.wikipedia.org/wiki/%E3%83%9D%E3%83%BC%E3%82%AB%E3%83%BC%E3%83%BB%E3%83%8F%E3%83%B3%E3%83%89%E3%81%AE%E4%B8%80%E8%A6%A7 はじめに この連載エントリでは、なるべく

    Haskellでポーカーを作ろう〜第二回 ポーカー・ハンドの判定をする 前編〜 - Creatable a => a -> IO b
  • Haskellでポーカーを作ろう〜第一回 リストのシャッフルとカードの定義〜 - Creatable a => a -> IO b

    はいはいどーも、進捗ダメです。ちゅーんさんです。 基的にコンスタントに何かを生み出し続けなくてはいけないのが、 ギークなアクティブニートの使命なわけですが、一日の半分以上は睡眠とドラクエに当てらています。 人生なんてそんなものです。 えーっと そういえば、勉強会とかTLとかで、 「すごいH読んで、基的な事はわかったと思うけど、Haskellで具体的なプログラムを開発するイメージが出来ない」 なんていう話を聞くことがたまにあって、そんなに大きくなくても良いので実践的なやさしい文章が増えると良いなぁとか、 ずっと思っていたわけです。 で、そういう状況でドラクエのカジノのポーカーをプレイしたりしていると、 「あ、ポーカー作ろう」っていう気分になったりするじゃないですか。 なったんですよ。 んなわけで、今回からちょっとづつ、Haskellを使ってCUIでプレイできるポーカーゲームを作っていき

    Haskellでポーカーを作ろう〜第一回 リストのシャッフルとカードの定義〜 - Creatable a => a -> IO b
  • Write You a Haskell ( Stephen Diehl )

    Building a modern functional compiler from first principles. Stephen Diehl In 2014 I wrote a short tutorial about building a small imperative language in Haskell that compiled into LLVM. I was extremely happy with the effect the tutorial seemed to have, and the warm response I got from so many people was very encouraging. I've done a great bit of thinking about what the most impactful topic I coul

    Write You a Haskell ( Stephen Diehl )
  • Things that amuse me

    Quicksort in Haskell Quicksort is a commonly used example of how succinct Haskell programming can be. It usually looks something likes this: qsort :: (Ord a Bool) => [a] -> [a] qsort [] = [] qsort (x:xs) = qsort (filter (<= x) xs) ++ [x] ++ qsort (filter (> x) xs) The problem with this function is that it's not really Quicksort. Viewed through sufficently blurry glasses (or high abstraction altitu

  • Our Blog Posts

    FP Complete Corporation Announces Partnership with Portworx by Pure Storage FP Complete Corporation Announces Partnership with Portworx by Pure Storage to Streamline World-Class DevOps Consulting Services with State-of-the-Art, End-To-End Storage and Data Management Solution for Kubernetes Projects.

    Our Blog Posts
  • defmacro - Writing A Lisp Interpreter In Haskell

    Introduction A while ago, after what now seems like eternity of flirting with Haskell articles and papers, I finally crossed the boundary between theory and practice and downloaded a Haskell compiler. I decided to do a field evaluation of the language by two means. I was going to solve a problem in a domain that Haskell is known to excel at followed by a real world problem1 that hasn't had much ex

  • Haskellの単体テスト最前線 - あどけない話

    この記事の最新版は、githubで管理されています。 これはHaskell Advent Calendar 2012の5日目の記事です。 Haskellで作成したパッケージに対して、単体テストを書くための最新情報をお届けします。 要約 要点は4つです。 利用者に見せたい振る舞いは、doctest で書く 利用者に見せたくない振る舞いは、hspec で書く テストを自動化するフレームワークとしては Cabal を使う doctest でも hspec でも、純粋なコードに対しては、できるだけ QuickCheck などの性質テストを書く この記事で一番伝えたいのは、3) です。例題としては、Base64 という符号化を取り上げます。Base64 は知っていると仮定して話を進めますので、知らない人はあらかじめ Wikipedia の Base64 の説明でも読んで下さい。 この記事で利用するコ

    Haskellの単体テスト最前線 - あどけない話
  • Googleの並列ログ解析向け言語「Sawzall」が公開されたので使ってみた | Preferred Research Blog

    Rapidly Realizing Practical Applications of Cutting-edge Technologies

    Googleの並列ログ解析向け言語「Sawzall」が公開されたので使ってみた | Preferred Research Blog
  • Haskellで人工無脳をつくろう — laskell 0.0.1 documentation

    cabalを使う¶ cabalはHackageのパッケージをインストールするためのツールです。 これはいわゆるperlのcpanやpythonのeasy_installにあたるものなので、早めに覚えるべきコマンドです。先人の知恵を上手に取り入れて 素早く開発するのはHaskellでも一緒です。 Haskell Platformをインストールすれば使えるようになっているはずなので、 早速コマンド入力用のユーザーインターフェースライブラリを導入してみます

  • ゆるふわHaskell (Light & Airy Haskell) — laskell 0.0.1 documentation

    はじめに¶ 巷に溢れているHaskellはいきなりのIOを避けているものが多いですよね。こ れらのを読んでわかった気になっても、実際に日々のタスクに使おうとした 場合に結構ハマることが多いんですよね。 「習うより慣れろ」みたいなスタイルでHaskellの学習をするとどういう学習曲 線をたどることになるんだろうか? phpのように動けばいいや(偏見?)というス タンスでHaskellのコードを書くことは可能なんだろうか? と疑問に思ったので、よくあるスクリプト言語の入門書(IOから入る系)のよう な話題を取り扱ってみようかなと。 Sphinxという良い感じに文章をかけるツー ルと、書いた文章をGitHub Pagesで手軽に公開できるような環境の存在も、こ の試みを後押ししました。というか書いていて楽しいので、みなさんもSphinx つかうとハッピーになれると思います。 フィードバックな

  • Haskell 用の emacs カスタマイズ例 - わからん

    Haskell Advent Calendar 2011 への参加記事です。ふだん emacs でコードを書いているプログラマが Haskell を使ってみようと思ったときに、10 分でそれなりの環境構築するための、便利な手順書となることを目指して書きました。~/.emacs や ~/.emacs.d/init.el などの設定ファイルは、dot.emacs と表記しています。 Haskell の環境構築 Haskell 自体の環境構築の説明はこの記事の範囲外ですが、前提ですので、信頼できそうな説明へのリンクを載せておきます。 トラビスさんの『Haskell Platform インストール Linux編』 shelarcy さんの『Haskell Platform インストール Mac編』 tanakh さんの『Haskell Platform インストール Windows編』 ただし、私

    Haskell 用の emacs カスタマイズ例 - わからん
    syohex
    syohex 2011/12/19
    画像もあって、とてもわかりやすい。
  • 経験15年のOCaml ユーザーが Haskell を仕事で半年使ってみた - camlspotter’s blog

    今の会社に移って半年経ちました。めでたく試用期間終了です。といっても別に試用期間中に密かに首を切られるような事をしたとか、逆に試用期間が終わったからと言ってこれで定年までのうのうと働ける、という訳ではありません。未来は全く判りません。まあとにかく、一つ区切りがやってきました。 金融を知らないQuantsの仕事 私の職業の肩書きには Quantitatitatitatitative という単語がくっついて超カッコよさそう。普通は Quant というと、金融工学や統計数理に詳しい夜もブイブイいわしている超イケメン20代を想像しますが、私は金融とか全然知らないアラフォーお父さんです。それでも Quant です。お願いですから、私に何を買ったらいいかとか、聞かないでください。金融商品とか買った事ないし。というか、逆に教えて欲しいです。 私のチームは、当の Quant さん達が開発した、金融派生商

    経験15年のOCaml ユーザーが Haskell を仕事で半年使ってみた - camlspotter’s blog
  • http://atnd.org/events/10631

    http://atnd.org/events/10631
  • 最適化コンパイラ屋がHaskellの副作用について考えてみる - ブートストラッピングでコンパイラを作る日記

    Haskellに副作用があるのか?というのは難しいテーマだと思いますが、少なくとも最適化理論での一般的な「副作用」の定義ではHaskellは全く副作用がない言語と言えると思います。 理論的に美しいという点がHaskellの設計の一番重要なところだと思うのですが、バックエンドの泥臭い話も面白いかもと思ったので書いてみます。 私は主に手続き型言語の最適化をやっていて関数型言語は詳しくありませんので、見当違いな事を書いていたら指摘して下さい。 まずは副作用の定義の為に「データ依存関係」(Wikipedia:依存関係)の説明をします。 ある変数xを使用・定義する二つの文を考える時、その評価順序関係には以下の4種類があり、それぞれの関係を以下のように呼びます。 真の依存 x = ... ... ... = x 逆依存 ... = x ... x = ... 出力依存 x = ... ... x =

    最適化コンパイラ屋がHaskellの副作用について考えてみる - ブートストラッピングでコンパイラを作る日記
  • Haskellで書いたCGIをPerlでテストする - Pixel Pedals of Tomakomai

    以下は、aとbに渡された数字を足し算するだけの簡単な(?)CGIです。 #!/usr/bin/env runghc {- sum.cgi -} import Network.CGI import Control.Monad cgiOutput (Just n) = do setHeader "Content-Type" "text/plain" output $ show n ++ "\n" cgiOutput Nothing = do setHeader "Content-Type" "text/plain" output "" cgiMain = do a <- getInput "a" b <- getInput "b" cgiOutput $ foldl (liftM2 (+)) (Just 0) (map (liftM read) [a, b]) main = runCGI $

    Haskellで書いたCGIをPerlでテストする - Pixel Pedals of Tomakomai
  • ghc-mod をインストールして夢のemacs上でhaskellプログラムを補完 - 計算機と戯れる日々

    ghc-mod をインストールして夢のemacs上でhaskellプログラムを補完 http://www.mew.org/~kazu/proj/ghc-mod/en/ をインストールしようとおもう。 ubuntuのデフォルトパッケージでやることはあきらめた。 なるべく最新のGHCにして(6.12.2) cabalでいろんなものをインストールした。 プロクシを使う場合には export httpproxy=http://サーバ:ポート/ を設定しておけばOK $ cabal install ghc-modあっさり。なんじゃそりゃ。 $ cd ~/.cabal/share/ghc-mod-0.4.4/ $ make $ cp ghc* ~/.emacs.d/elsipあとは.emacsに以下を書き込む (autoload 'ghc-init "ghc" nil t) (add-hook 'ha

    ghc-mod をインストールして夢のemacs上でhaskellプログラムを補完 - 計算機と戯れる日々
  • Emacs での Haskell プログラミングを幸せにする - あどけない話

    前から予告していましたが、Emacs での Haskell プログラミングを幸せにするプロジェクトを開始しています。ゆくゆくは、haskell-mode を置き換えたいのですが、とりあえず haskell-mode と共存して、補完とドキュメントの閲覧が幸せになるコードをリリースします。 まだ、プロジェクトのページを作っていないので、コードは一時的にここに置いておきます。 補完 (M-TAB) 行頭では、行頭に来るべき予約語(import とか)の補完ができます import の後では、モジュール名(Data.List とか)の補完ができます。 その他の場所では、予約語(where とか)、関数名(foldr とか)、型名(Bool とか)などの補完ができます。 cabal などを使ってインストールしているモジュール名が補完対象となります。つまり、ghc-pkg が表示してくれるパッケージ

    Emacs での Haskell プログラミングを幸せにする - あどけない話
  • snow-bellの日記

    新型インフルエンザにかかってしまったようなので 診断された経緯などを書きます 日曜日正午くらい     なんか喉だけが痛い状態 月曜日午前0時くらい    足が筋肉痛みたいに痛くなる 月曜日午前4時30分くらい  目眩がするので熱を測ったら38度だった 月曜日午前5時くらい    専用受付に連絡 今緊急で病院に行って検査しても インフルエンザかどうか分からない 仮に陽性だったとしても薬が1日分 しか出ないと言われる →体力温存して朝病院に行くようにする 月曜日9時         病院に行かなければならないが どうしても体調が悪いため 病院に行く時間を延ばす 月曜日11時        病院へ行く 病院に行ってすぐ先生から「インフルエンザだと思うよ」といわれました 咳の感じとか熱の出方鼻水などがもうそのまんまインフルエンザの 症状そのものらしいです 検査をしても発熱してからギリギリ8時間の

    snow-bellの日記
  • Life Goes On

    @autotaker1984 さんの以下の記事について考えました。 永続リアルタイムキューのHaskell実装と計算量解析 - autotaker's blog head / tail するときに、reverse さえ完了していれば問題ない、だから snoc で停止計算を進行させる必要はない、というのはなんとなく説得力があります。 けれども PFDS では、 rotate が始まるときに停止計算がすべて完了していること(負債を完済していること)にこだわっていました。 それは、停止計算が重なると再帰的な呼び出しで計算量が増えるからです。 たとえば空のキューに 1 から 15 まで snoc すると、frontList は以下のような状態で、go 関数の呼び出しが再帰的になります。 go [] (go [] (go [] (go [] [] [1]) [3, 2]) [7, 6, 5, 4])

    Life Goes On
  • 1