タグ

haskellに関するxxxxxeeeeeのブックマーク (30)

  • Haskellでコマンドラインアプリケーションを作る時の基本的な情報とTips - fujimuradaisuke's blog

    Haskellでコマンドラインアプリケーション(以下CLI)を作る時の基的な情報とTipsをまとめてみました。 Haskellは雰囲気で読める、しかしCLIはあまり作ったことが無い、って人が想定読者です。 この記事はHaskell Advent Calendar 2014の16日目のエントリです。 とりあえず何のサンプルコードも無く話を進めるのも雰囲気が伝わらないかなと思って、Gitリポジトリにあるファイルの中身を標準出力に出力するプログラムをls-moreという名前で作ってみました。 module Main where import Control.Monad import Data.Monoid import qualified Data.Version import Options.Applicative import Paths_ls_more (version) import

    Haskellでコマンドラインアプリケーションを作る時の基本的な情報とTips - fujimuradaisuke's blog
    xxxxxeeeee
    xxxxxeeeee 2014/12/17
    コマンドラインアプリケーション
  • Haskellのlensの使い方 (基本) - みゆっきのにっき

    ekmett先生のlensに関して Lens'は便利に使えはするけど、Prism,Iso,Traversal,Foldみたいなのは触ったことがなかったので調べた。 Lensの利用 1 import Control.Lens して 1 2 3 4 5 6 >>> ("hello",("world","!!!")) ^. _2 . _1 "world" >>> ("hello",("world","!!!")) & _2 . _1 .~ 42 ("hello",(42,"!!!")) >>> ("hello",("world","!!!")) & _2 . _1 %~ map toUpper ("hello",("WORLD","!!!")) みたいに使う。優先順位は以下のようになっている: 1 2 3 >>> ("hello",("world","!!!")) ^. (_2 . _1) >>

    Haskellのlensの使い方 (基本) - みゆっきのにっき
    xxxxxeeeee
    xxxxxeeeee 2014/12/15
    Lensの使い方
  • Typeable and Data in Haskell

    Data.Typeable and Data.Data are rather mysterious. Starting out as a Haskell newbie you see them once in a while and wonder what use they are. Their Haddock pages are pretty opaque and scary in places. Here’s a quick rundown I thought I’d write to get people up to speed nice and quick so that they can start using it.1 It’s really rather beautiful as a way to do generic programming in Haskell. The

    xxxxxeeeee
    xxxxxeeeee 2014/12/10
    Typeable, Data意味全くわかってなかったので多少なんかわかった気がしたような気がした
  • HaskellのHspecでテストケースぶん回したいの巻 - 定食屋おろポン

    Hspecって(使いづらいけど)楽しいよね! 特に使いづらいと思ったのがこれ。 Hspecで関数fの振る舞いを記述するとき、テストケースとして[(a1,b1),(a2,b2),...]っていうリストを渡して「f a1 `shouldBe` b1」みたいに書きたいとか思ってもモナドに阻まれて諦めてる— 定屋 おろポン (@oroponya) February 15, 2014 Hspecはなにも悪くないんだけどさ。describeとかitとかって、なんかIOモナドとかモナドとか、そういう「よくわからない何か」の香りがするんだよね。 だってdoで振る舞い(it関数)を連続して書けるんだよ? main = hspec $ do describe "test" $ do it "will pass" $ 0 `shouldBe` 0 it "will not pass" $ 0 `shouldB

    xxxxxeeeee
    xxxxxeeeee 2014/10/24
    Haskellのmonadはライブラリでここまで出来るんや!案件
  • dyre

    Dyre implements dynamic reconfiguration facilities after the style of Xmonad. Dyre aims to be as simple as possible without sacrificing features, and places an emphasis on simplicity of integration with an application. A full introduction with a complete example project can be found in the documentation for Config.Dyre

    xxxxxeeeee
    xxxxxeeeee 2014/07/01
    Hakellで動的に設定を読み込みなおしてreloadとかしてるらしい
  • やさしいFunctional reactive programming(概要編) - maoeのブログ

    あと、やはりネットワーク周りなどI/Oの多いプログラムの書きにくさが課題になっている印象。関数的なI/OはFRPで解決できそうな気がするんだけど調べてない。そろそろFRPをちゃんと理解したいなー。 Parsec 3活用事例: Keepalived構文チェッカ - maoeのブログ なんて書いてから早1ヶ月半、ようやくFRPが掴めてきたのでわかったことをまとめてみます。 Reactive programmingって何? FRPの前に、一般的にwikipedia:en:Reactive programmingと呼ばれるパラダイムについて触れておきます。reactive programmingとは疑似言語を使ってかなーり大雑把に説明すると、 var a = 1 var b = a + 1 a = 10 // aを書き換える print b // => 11print bの出力は2ではなく11です

    やさしいFunctional reactive programming(概要編) - maoeのブログ
    xxxxxeeeee
    xxxxxeeeee 2014/06/26
    Functional Reactive Programming, 覚えた
  • Heroku で Haskell (Scotty + Persistent) - daimatz.hateblo.jp

    Heroku がすごいことを知ったので少しずつ使おうとしています。 で、 Haskell で書いたアプリケーションを動かそうとしているのですが、 ちょいちょい触りつつわかったことを書いてみます。 巷では Heroku で Haskell を動かすにはビルド済みのバイナリを push するのが よく知られた方法のようです。 http://d.hatena.ne.jp/thimura/20111117/1321480728 http://www.slideshare.net/thimura1/yesod-on-heroku-12637246 http://d.hatena.ne.jp/Horiuchi_H/20121113/1352787592 http://taketoncheir.hatenablog.com/entry/2012/08/14/020456 しかしこの方法は Heroku

    Heroku で Haskell (Scotty + Persistent) - daimatz.hateblo.jp
  • GitHub - haskell-CI/haskell-ci: Scripts and instructions for using CI services (e.g. Travis CI or Appveyor) with multiple GHC configurations

    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

    GitHub - haskell-CI/haskell-ci: Scripts and instructions for using CI services (e.g. Travis CI or Appveyor) with multiple GHC configurations
    xxxxxeeeee
    xxxxxeeeee 2013/12/26
    Travis CIでHaskellを使いたいときはこれを使って複数バージョンのHaskellを使い分けるのが吉
  • adit.io

    You've reached Adit's homepage. Send me an email. Follow me on Instagram. Buy my art on Etsy. Here's the errata page for my book. TypeScript I collect my notes on TypeScript at typehints.org. Haskell My most popular post is Functors, Applicatives, And Monads In Pictures. If you liked that, check out my posts on the Reader, Writer and State Monads. These monads are used everywhere in Haskell. Get a

  • Making A Website With Haskell - adit.io

    Written April 15, 2013 updated: July 16, 2014 Warning: this post is old and out of date. This is a guide to building and deploying a simple website using Haskell. We will use: Scotty for the backend Blaze-html for templating and Persistent for the ORM. Scotty is Haskell's version of Sinatra. It also uses the same web server as Yesod (Warp) so it's quite fast. Getting set up Before we start, here's

    xxxxxeeeee
    xxxxxeeeee 2013/12/14
    scotty導入
  • 栄光のグラスゴーHaskellコンパイルシステム利用の手引き バージョン7.8.2

    栄光のグラスゴーHaskellコンパイルシステム利用の手引き バージョン7.8.2 The GHC Team 目次 The Glasgow Haskell Compiler License 1. 参考訳 1. GHCの紹介 1.1. GHCを入手する 1.2. メタ情報: ウェブサイト、メーリングリストなど 1.3. GHCのバグを報告する 1.4. GHCのバージョン番号付け規則 1.5. Release notes for version 7.8.1 1.5.1. Highlights 1.5.2. Full details 1.5.2.1. Language 1.5.2.2. Compiler 1.5.2.3. GHCi 1.5.2.4. Template Haskell 1.5.2.5. Runtime system 1.5.2.6. Build system 1.5.3. Lib

    xxxxxeeeee
    xxxxxeeeee 2013/11/18
    ghcに関するいろいろいろ
  • Peggy - The Parser Generator for Haskell

    Peggyとは PeggyはHaskell向けのパーザジェネレータです。 シンプルで扱いやすく、表現力のある Parsing expression grammer (PEG) を採用し、効率のよいPackrat parserを生成出来ます。 Parsing Expression Grammer Peggy は文法としてParsing Expression Grammer (PEG)を採用しています。 PEGには次のような特徴があります。 CFG (LL(1), LR(1), LALR(1), etc…) にある shift/reduce 競合が存在しない シンプルで表現力がある 無制限の先読みが可能、パーザとスキャナを分離する必要がない 入力長に対して線形時間での解析 PeggyはさらにPEGを拡張しています。 sepBy拡張構文 強力なエラー検出とわかりやすいエラーメッセージの生成 左再

    xxxxxeeeee
    xxxxxeeeee 2013/09/19
    Haskellで作られたパーサジェネレータ、ParsecはLL文法なのでこれはこれで面白い可能性が高い、後文法がbison書いてた人には分かりやすそう
  • IIJ Research Laboratory

    ネットワークの計測と解析 インターネットの使われ方やネットワークの挙動を把握する事は、ネットワークを運用し、その技術開発を行う ために欠かせません。しかし、観測で得られるデータ量は膨大ですがノイズが多く、また、観測できるのは極めて限られた部分でしかありません。そこで、膨大なデータから意味のある情報を抽出したり、部分的な観測からより一般的な傾向を推測する事が必要となります。... インターネット基盤技術 速くて、安全で、信頼性が高く、使いやすく、など、インターネットサービスへの要求はますます高まっています。これらの要求に応えるために、インターネットの 基盤技術も日々進歩しています。いまやインターネットはつながるだけのサービスではなく、高度で複雑な機能を備えた社会基盤となりました。IIJ技術研究所は、インターネットの基盤として実現が期待される機能を提供するために、さまざまな技術課題に取り組んで

  • モナドトランスフォーマー・ステップ・バイ・ステップ(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) - りんごがでている
  • HaskellでJSON Web APIを作ると幸せになれるかもよ - Fujimura

    先日Yesod勉強会第2回でHaskellでJSON Web APIを作る話しをしました。 内容的には下記のような感じです。 Web開発はクライアントサイドの技術が発達して、Web APIを作る機会が多くなった最近のフロントエンドは難しいし、分業したほうがいいっぽいYesodは独自技術&フルスタックすぎて分業辛いではscotty + persistent + aesonでJSON Web API作ろうぞなんか想像以上の相性の良さ。幸せになれそうなイキフンがビシビシ来てる発表資料はこちら。 ちなみにscottyはsinatraみたいな奴、aesonはJSONライブラリ、persistentはORマッパーです。 何しろaeson + persistentの相性がバッチリでした。発表後に@thimuraさんが見つけた じつは persistent のスキーマ定義で、テーブル名の横に js

    HaskellでJSON Web APIを作ると幸せになれるかもよ - Fujimura
    xxxxxeeeee
    xxxxxeeeee 2013/08/01
    yesod以外のwebフレームワーク
  • HaskellでWebスクレイピング - Haskell Advent Calendar 2012

    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

    HaskellでWebスクレイピング - Haskell Advent Calendar 2012
    xxxxxeeeee
    xxxxxeeeee 2013/07/26
    HaskellでHTMLをスクレイピングする
  • Haskellモナドトランスフォーマー(1) - みどりねこ日記

    ここまでで、モナドがどういうもので、IOモナドは不純な計算のため、Maybeは失敗するかもしれない計算のために、…というように、どのように使われるのかが理解できたのではないかと思います。 実際の作業の中で、複数のモナドの特性を扱いたい場合があります。もちろん、IO (Maybe a)みたいなことを書いて使うことも出来ますが、それでは値を取り出すとき、doブロックの中でパターンマッチングを行わなくてはなりません。モナドのちからを使えば、それすら回避することが出来ます。 ということで、これからしばらくモナドトランスフォーマーについて書いていきます。これは特別な型で、モナドに適用した時、新たな合成されたモナドを生成します。このモナドはそのどちらの性質も持ち合わせることになります。 IT業界に生きる上で、ユーザーにパスワードを強固なものにするようにすすめるプログラムという、よくある問題を例にして考

    Haskellモナドトランスフォーマー(1) - みどりねこ日記
    xxxxxeeeee
    xxxxxeeeee 2013/07/14
    モナド変換子
  • QAで学ぶMonad - あどけない話

    この記事は、Monad でつまづいた Haskeller のための Monad 再入門です。 Monadとは何ですか? Monad とは、単なる型クラスの一つです。難しいという風評もありますが、それ以上でもそれ以下でもありません。 この型クラスのメソッドは、return と >>= です。 class Monad m where (>>=) :: m a -> (a -> m b) -> m b return :: a -> m a つまり、以下を満たす型の集合が Monad です。 m a で表現できるように一つの型変数を格納するコンテナ型 >>= と return を実装 return は新しいコンテナを作り、>>= は二つのコンテナを合成します。 Monad のインスタンスは失敗系と状態系に大別できます。以下に代表的なインスタンスを示します。 失敗系: Maybe、[] (リスト)

    QAで学ぶMonad - あどけない話
  • モナドの六つの系統[Functor x Functor] - モナドとわたしとコモナド

    モナドは「アクション」を表す抽象的な構造である。モナドは、Haskellにさまざまな概念に対する記述能力をもたらす。 モナドの基礎 return :: a -> m a: 純粋な値をモナドで包む。 m >>= f :: m a -> (a -> m b) -> m b: モナドmに包まれた値をfに渡し、その結果として現れたモナドを結合する。 固有アクション: それぞれのモナドに固有の方法でモナドを生み出す。 実行: モナドに包まれた値を、より根源的な形に還元する。 モナド則 モナドに以下の三つの制約を課すことによって、最低限度の記述能力を保証している。 return a >>= k == k a m >>= return == m m >>= (\x -> k x >>= h) == (m >>= k) >>= h より強い制約は、より強い力を生み出す。 モナドの分類 モナドは、以下の6つ

    モナドの六つの系統[Functor x Functor] - モナドとわたしとコモナド
  • 使ってみよう Enumerator - あどけない話

    Enumerator Package - Yet Another Iteratee Tutorialは、Iteratee: 列挙ベースのI/Oよりは分かりやすいのですが、やっぱりよく分かりません。なぜなら、僕は使い方を知りたいのに、作り方が書いてあるからです。そこで、Enumerator ライブラリの使い方を簡単に紹介します。 登場人物 Iteratee 入力をもらって計算をします run_ で実行します IO モナドが指定されていれば、副作用を起こせます オートマトンと考えると分かりやすいです Iteratee 同士は (>>=) で合成できます Iteratee >>= Iteratee → Iteratee Enumerator Iteratee と ($$) で合成することにより、新たな Iteratee になります Enumerator $$ Iteratee → Iterate

    使ってみよう Enumerator - あどけない話