タグ

関連タグで絞り込む (179)

タグの絞り込みを解除

Haskellに関するpoginのブックマーク (183)

  • [Haskell-cafe] The end of an era, and the dawn of a new one

    [Haskell-cafe] The end of an era, and the dawn of a new one Simon Peyton-Jones simonpj at microsoft.com Wed Dec 5 17:56:02 CET 2012 Previous message: [Haskell-cafe] Are there REPA linear algebra routines? e.g. Eigenvalues? Next message: [Haskell-cafe] The end of an era, and the dawn of a new one Messages sorted by: [ date ] [ thread ] [ subject ] [ author ] Friends You'll have seen Simon Marlow's

  • 例題で比較する状態系のモナド - あどけない話

    金曜日に状態系のモナドを説明しないといけないので、例題を書いて比較できるようにしておきます。 呪文として、以下のモジュールを読み込んでおきましょう。 import Data.Char import Control.Monad.Identity import Control.Monad.Reader import Control.Monad.Writer import Control.Monad.State Identityモナド 入力が一つで、出力が一つのモナド。面白みはない。 i :: Identity Int i = do x <- return 2 y <- return 3 return $ x * y でも、モナドは Haskell の中に住むマイクロ言語で、このマイクロ言語でマイクロプログラムを作成した後は、run で実行するものだというイメージは分かるかも。 > runIde

    例題で比較する状態系のモナド - あどけない話
  • Freeモナドって何なのさっ!? - capriccioso String Creating(Object something){ return My.Expression(something); }

    最近Haskellerの間でFreeモナドが熱いです。 Haskellで悟りを開いた人がFreeモナドで再び悟りを開いたりして、なんかよく解らないけど凄いことになっている今日このごろですが、すっかり乗り遅れていました。どうも、貴女のちゅーんです。 で、皆こぞって「すごいすごい」と言っているFreeモナドなので、流石にいつもまでも全然知らないのはマズイんじゃないかなぁとか思って、重い腰を持ち上げ調べながらこの記事を書き始めたワケですよ。はい。*1 けっこう急ぎで勉強して書き上げたので随所に間違いあるかもです。ツッコミお待ちしてます。 さて、この「Freeモナド」について、オレオレ定義で簡単に言葉にすると。「Functorと組み合わせて様々な挙動を実現できるモナド」です。 大抵「Monadのインスタンス」というと、MaybeにしてもIOにしても、わりと具体的な事象を扱ってますが、このFreeモ

    Freeモナドって何なのさっ!? - capriccioso String Creating(Object something){ return My.Expression(something); }
  • Control.Arrow - mzsmsの雑記

    http://www.nicovideo.jp/watch/sm5103132 で、Haskell(というかGHC?)のControl.Arrowに関心を持ったので、すこしいじってみた。 loop その1 まず、理解が難しいloopから。なぜなら、どうもArrowを使うときにはトップダウンで考えないとわけが分からなくなるようなので。そしてあとで出す例もそうだけど、繰り返しをする仕事は一番上がloopになるので、loopに何を入れるべきなのかから考えはじめることになる。 とりあえず、(->)型(関数そのものの型)のloopの定義は次のとおり: class Arrow a => ArrowLoop a where loop :: a (b,d) (c,d) -> a b c instance ArrowLoop (->) where loop f b = let (c,d) = f (b,d)

    Control.Arrow - mzsmsの雑記
  • 手続き脳によるHaskell -- Sorting Algorithms

    このページは手続き脳から脱却でいない筆者が、Haskell による各種 ソートティングアルゴリズムを実装してみた結果を紹介するページです。ソート はアルゴリズムの基ですから、これで Haskell を攻略しようというわけ です。 ところで、Haskell に関するWebページを巡回していると、高階関数やモナド などを複雑に使ったアクロバチックでアブノーマルなコードに出会うことが しばしばあります。書いている超頭の良い人達は自らの変態さ加減が披露出来て 快感なのかもしれませんが、頭の悪い私にはそんなコードは理解できません... orz。 そこで私のページでは次のスローガンでプログラミングを行います 普通にやれ、普通に! そんなわけで「モナドを理解したい」とか常人には不可能な無理難題を期待 している人は他のページを当たってください。筆者自身が分かってないので解説 できません。ごめんなさい。

  • Rahasia di Balik Keberhasilan Situs Slot Gacor: Pengalaman Pengguna Terungkap

    Apakah Anda ingin mengetahui lebih lanjut tentang Slot UUS777 dan apa yang membedakannya dari platform perjudian online lainnya? Dalam artikel ini, kami akan mengeksplorasi fitur, aspek unik, dan kesalahpahaman umum seputar Slot UUS777. Dari manfaat bermain hingga kemungkinan kekurangan, kami akan mencakup semua yang perlu Anda ketahui sebelum memulai. Jika Anda penasaran tentang apa yang ditawark

  • Haskell - Wikibooks

    Haskellは関数型言語であり、他のプログラミング言語を触ったことのある読者なら、Haskellのやり方は他の言語とは多少異なっていることが分かるでしょう。 Haskellの独自性は二つあります。一つは、「純粋」関数型言語であることです。純粋関数型言語では、同じ関数を同じ引数で呼び出した場合、必ず同じ戻り値になることが保証されます。二つ目は、Haskellが極めて現代的な型理論を備えていることです。Haskellでは、型クラスや代数的データ型などの型を扱うことができます。これらの難解な概念は、今は全く理解できないかもしれませんが、このを読み終えた後には、より身近なものに感じられるでしょう。 さて、Haskellerたちはこの言語のどこに魅力を感じているのでしょうか。ユニークで新しい感覚を得られるからでしょうか。しかし、Haskellの最も優れた性質は、純粋関数のみによって書かれているこ

  • HaskellでGUI #2 FliptItの改良:FFIの利用 - 落書き、時々落学

    (今回は GUI というより FFI な気がする.でも目的は GUI だからいいか.) 前回作成した GUI の FlipIt を改良した. 改良は以下の2点 周期を増加. 解を表示. 周期の増加 前回は マスの変化が 白→黒→白→黒→… だったが,今回はこの周期を変更できるようにした. 白→灰→黒→白→灰→黒→… 内部的には Bool の2次元配列を Int の2次元配列に変更しただけ. 描画の色を少し調整した程度. ただ,解を求める際にガウスの消去法を使用するので,周期は素数でないと問題が生じる. また,周期が大きすぎても,わけわかめになるだけなので,最大周期は7に設定している. 解を表示 ガウスの消去法をやるだけといえば,それだけ. ただ,以前にC++で書いたことがある. そこで,今回は Haskell の FFI(Foreign Function Interface) を使って外部

    HaskellでGUI #2 FliptItの改良:FFIの利用 - 落書き、時々落学
  • GitHub - rtperson/chernobog: A blog app created using Haskell and Yesod

  • Why free monads matter

    Interpreters Good programmers decompose data from the interpreter that processes that data. Compilers exemplify this approach, where they will typically represent the source code as an abstract syntax tree, and then pass that tree to one of many possible interpreters. We benefit from decoupling the interpreter and the syntax tree, because then we can interpret the syntax tree in multiple ways. For

  • ConduitとHaskellでネットワークプロキシサーバを作る - 純粋関数空間

    この記事は http://www.yesodweb.com/blog/2012/06/conduit-0-5 の翻訳です。 conduit-0.5 をリリースしました。 conduitはストリームデータを扱うためのライブラリです。 conduitを用いると、様々な形のデータを生成、変形、消費するような処理を、 簡単に組み合わせることができるようになります。 enumerator/iterateeパラダイムと同じ問題を解決することを目的に作られましたが、 アプローチはこれらのものとは異なります。 conduitは簡単に理解して利用できるものになることを一番の目的としています。 遅延I/Oとは異なり、リソースの即時開放を保証し、 また、純粋なコードに例外を持ち込みません。 今回のリリースでSource、Sink、Conduitのそれぞれを作るための、 シンプルで効率の良い、高レベルのインターフ

  • Haskellモナドトランスフォーマー(12) - みどりねこ日記

    今まで、MaybeTとListTという2つの非常に単純なモナドトランスフォーマーの実装をしてきました。それから、少し遠回りをしてモナドをそれのトランスフォーマーに持ちあげるという話もしましたね。ここでは、その二つの考えを、StateTという標準ライブラリの中でも興味深いトランスフォーマーの実装を見ながらつなげてみましょう。このトランスフォーマーを学ぶことで、モナドトランスフォーマーをコードの中で使用するときに、トランスフォーマーのメカニズムがはっきりと見えてくるようになります。もしもわかりにくかったら、過去のStateモナドについての記事を読んでみてください。 Stateモナドが newtype State s a = State { runState :: (s -> (a, s)) } と定義されているように、StateTトランスフォーマーも newtype StateT m a =

    Haskellモナドトランスフォーマー(12) - みどりねこ日記
  • モナド変換子の使い方がわかってきた

    モナドの上にまたモナドって株か?二階建てか?なんて思って敬遠してたのだけど、なんとなくわかってくると、包んで包んでしてるだけじゃないかと。 RWH18章 モナド変換子を使わないでログ記録。これはIO [(FilePath, Int)]型になる。 module CountEntries (listDirectory, countEntriesTrad) where import System.Directory (doesDirectoryExist, getDirectoryContents) import System.FilePath ((</>)) import Control.Monad (forM, liftM, when) listDirectory :: FilePath -> IO [String] listDirectory = liftM (filter notDots

    モナド変換子の使い方がわかってきた
  • Stateモナドとモナドトランスフォーマー - yunomuのブログ

    前フリ 最近@seizansさんが新人Haskell使いを増やしまくっている。 で、その人達がググった時のために先にたくさんブログ記事書いて釣ろうぜっていう話をしていたけど、@kazu_yamamotoさんとか@nom4476さんらが仰るように、一旦自分がわかってしまうとなかなか記事を書く気力が起きない(し、子育てで忙しいので後は任せたって言われた)。 そうこうしているうちに@seizansさんがすごい勢いでHaskell力を伸ばしはじめた。 なので最近彼が覚えたらしいモナドトランスフォーマーの入門的な記事をStateモナドと合わせて先回りして書いてしまおうというわけす。引用数を稼ぐには先手必勝です。 Stateモナド Haskellで一時的な状態を持たせたい時はStateモナドを使うらしいですよ。 といっても何が何だかよくわかんないんですけど、 状態モナド遊び - あどけない話 この記事

    Stateモナドとモナドトランスフォーマー - yunomuのブログ
  • Sudoku - HaskellWiki

    Here are a few Sudoku solvers coded up in Haskell... Monadic non-deterministic solver Here is a solver by CaleGibbard. It possibly looks even more naïve than it actually is. This does a backtracking search, trying possibilities until it finds one which works, and backtracking when it can no longer make a legal move. import MonadNondet (option) import Sudoku import System import Control.Monad solve

  • Draft for submission to Haskell 2012 Dependently Typed Programming with Singletons Richard A. Eisenberg University of Pennsylvania Philadelphia, PA, USA eir@cis.upenn.edu Stephanie Weirich University of Pennsylvania Philadelphia, PA, USA sweirich@cis.upe

    Draft for submission to Haskell 2012 Dependently Typed Programming with Singletons Richard A. Eisenberg University of Pennsylvania Philadelphia, PA, USA eir@cis.upenn.edu Stephanie Weirich University of Pennsylvania Philadelphia, PA, USA sweirich@cis.upenn.edu Abstract Haskell programmers have been experimenting with dependent types for at least a decade, using clever encodings that push the limi

  • 毎日Haskell

    最終更新時間:2008年05月29日 19時15分03秒2008-05-19 【自由課題】重み順列挙を用いた幅優先探索、深さ優先探索(の思慮の足りないバージョン) (2008-05-29 追記: この回で書いているコードは無駄な動きをしている上、幅、深さとも有限な木にしか対応できていないことに気づいた。次回はこの反省に立ったネタを書くつも り)前回(2008-05-17 皿回し)使った列挙方法を幅優先探索にも使えることに気づいた。比較する値として (深さ, 選択した枝番号で構成される path) のペアを用いる。 bfs :: (a -> [a]) -> a -> [a] bfs f a = map snd $ fsort [((0,[]),a)] where fsort = foldr (merge.fsort') [] fsort' x@((d,path),a) = (x:) $ fs

  • はてなブログ | 無料ブログを作成しよう

    来年も作りたい!ふきのとう料理を満喫した 2024年春の記録 春は自炊が楽しい季節 1年の中で最も自炊が楽しい季節は春だと思う。スーパーの棚にやわらかな色合いの野菜が並ぶと自然とこころが弾む。 中でもときめくのは山菜だ。早いと2月下旬ごろから並び始めるそれは、タラの芽、ふきのとうと続き、桜の頃にはうるい、ウド、こ…

    はてなブログ | 無料ブログを作成しよう
  • Haskellモナドトランスフォーマー(2) - みどりねこ日記

    関数getPasswordとそれを利用するコードを簡潔に書くために、IOモナドにMaybeモナドの特性を与えるモナドトランスフォーマーを定義します。これを、モナドトランスフォーマーの慣例的な名付け方に従い、最初に与える特性を持つモナドの名前+Tとし、MaybeTと呼びます。 MaybeTは、m (Maybe a)のラッパーで、mにはどのようなモナドも入ることが出来ます。(ここではIOに注目します。) newtype (Monad m) => MaybeT m a = MaybeT {runMaybeT :: m (Maybe a)} アクセサ関数runMaybeTを使うことによってMaybeTのなかに隠れた中身にアクセスできます。 モナドトランスフォーマー自身もモナドであるため、MaybeT mをMonadクラスのインスタンスとして置く必要があります。 instance Monad m =

    Haskellモナドトランスフォーマー(2) - みどりねこ日記
  • Haskellモナドトランスフォーマー(3) - みどりねこ日記

    さて、準備が整ったので、getPasswordやそれを利用するコードを書きなおしてみましょう。 getValidPassword :: MaybeT IO String getValidPassword = do s <- lift getLine guard (isValid s) return s askPassword :: MaybeT IO () askPassword = do lift $ putStrLn "Insert your new password: " value <- getValidPassword lift $ putStrLn "Storing in database ... " (>>=)演算子のお陰で、Nothingなのか、Justなのかをプログラマが手動でチェックする必要がなくなり、随分とすっきりしていますね。 liftを関数getLineやputS

    Haskellモナドトランスフォーマー(3) - みどりねこ日記