タグ

Haskellに関するeielのブックマーク (31)

  • チャットワークのWebhookの署名検証を各言語で実装してみた その2 - Chatwork Creator's Note

    こんにちは。@eielhです。 id:cw-hayashiが投稿した記事である 「チャットワークのWebhookの署名検証を各言語で実装してみた」があります。 しかし、自分が利用しているプログラミング言語が網羅されていなかったので、続きがないのか確認してみたところ「自分でやってください」*1と言われてしまいました。 というわけで、早速挑戦してみました。 準備するもの Elixir 参考 Rust 参考 Haskell 参考 まとめ 準備するもの 必要な準備物は「チャットワークのWebhookの署名検証を各言語で実装してみた」を参照ください。 creators-note.chatwork.com Elixir 弊社ではAkkaを利用していますが、アクタープログラミングに挑戦してみるにはScalaはなかなかヘビーです。 そんな時でも、Elixirはライトに使えてアクタープログラミングの学習にも

    チャットワークのWebhookの署名検証を各言語で実装してみた その2 - Chatwork Creator's Note
  • Beyond Scala Lens

    A Lens is a functional concept which solves a very common problem: how to update a complex immutable structure. This is probably the reason why Lenses are relatively well known in functional programming languages such as Haskell or Scala. However, there are far less resources available on the generalization of Lenses known as "optics". In this slides, I would like to go through a few of these opti

    Beyond Scala Lens
  • Stackage Server

    Stable Haskell package sets A distribution of compatible Haskell packages from Hackage that build together Stackage is a community project: how to add packages to Stackage stack makes using Stackage easy Latest releases per GHC version Stackage Nightly 2024-01-12 (ghc-9.8.1), today LTS 22.5 for ghc-9.6.3, published 4 days ago LTS 21.25 for ghc-9.4.8, published 4 weeks ago LTS 21.21 for ghc-9.4.7,

    eiel
    eiel 2015/06/17
  • Haskellでポーカーを作ろう〜第一回 リストのシャッフルとカードの定義〜 - Creatable a => a -> IO b

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

    Haskellでポーカーを作ろう〜第一回 リストのシャッフルとカードの定義〜 - Creatable a => a -> IO b
    eiel
    eiel 2015/05/12
  • 内包表記について、すごい合同勉強会で話した | そんなこと覚えてない

    すごい合同勉強会2014 in 広島でセッションしたので内容を公開しておく。 今回は「私がモナドの内包表記という名前を知った時の感覚を伝えよう」というのが目的でした。 さりげなく「私がモナドに感じている効能を伝える」というのもしているのですが、そこは当にさりげなく。 内包表記。その意味を知らずに5年前ぐらいにpythonで利用していて、forやif文字通りにうけとっており、その動作を正しく理解できてないときがありました。 現在とその間にHaskellを学び、その5年前の自分に内包表記を伝えるにはという観点で話を進めました。 まず、リストの内包表記ですが、リストを生成を簡単にしてくれる機能です。 内包表記は、どうやら数学の集合の記法である内包的記法に由来するそうで、「関数プログラミング入門 ―Haskellで学ぶ原理と技法―」か何かで読んだ記憶があります。 その対になる記法として外延的記法

  • Haskell のフィールドラベルをもつデータ型について | そんなこと覚えてない

    Haskellのレコード構文というかフィールドラベルをもつデータ型についてなんだけど、苦手意識というか更新の方法を最近までよくしらなくてうまく使えてなかった。 わかったことを含めて書いておく。 フィールドラベルをもつデータ型はざっくりいえば、構造体のようなものである。名前と年齢をもつ「人」を表現する型をつくってみよう。 data Person = Person { name :: String, age :: Int } deriving Show 上記はフィールラベルがないデータ型にいろいろおまけがついてくるだけなので data Perosn = Person String Int とした場合と同じような使い方ができる。 ghci> data Person = Person { name :: String, age :: Int } deriving Show ghci> Person

    eiel
    eiel 2014/09/06
  • Programming guidelines - HaskellWiki

    Programming guidelines shall help to make the code of a project better readable and maintainable by the varying number of contributors. It takes some programming experience to develop something like a personal "coding style" and guidelines only serve as rough shape for code. Guidelines should be followed by all members working on the project even if they prefer (or are already used to) different g

  • Lensことはじめ - あどけない話

    見ろ! Haskell が OOPL のようだ! さてさて、ようやく重い腰を上げて、Lens を勉強し始めましたよ。Haksell for allを見て勉強すればいいのかなと思ったんですが、解説しているパッケージが data-lens なので古いですね。 今、使うべきなのは、lens というパッケージらしいです。解説は、この README を読むのが一番だそうです。この README と Haskell for all をにらめっこしながら、Lens の getter と setter の機能を使ってみます。 背景 Haskell の代数データ型にはフィールドラベルが定義できて、これがいわゆる getter と setter の役割を果たします。Haskell for all から例を引用してみましょう。 data Point = Point { x :: Double , y :: Do

    Lensことはじめ - あどけない話
    eiel
    eiel 2013/03/20
    "見ろ! Haskell が OO のようだ!"
  • Haskellの単体テスト最前線 - あどけない話

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

    Haskellの単体テスト最前線 - あどけない話
  • 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のそれぞれを作るための、 シンプルで効率の良い、高レベルのインターフ

  • Conduit

    eiel
    eiel 2012/01/18
    conduitの具体的な説明。
  • できる!Template Haskell (完) - はてな使ったら負けだと思っている deriving Haskell - haskell

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    できる!Template Haskell (完) - はてな使ったら負けだと思っている deriving Haskell - haskell
    eiel
    eiel 2011/12/29
  • 基本的なこと

    必要呼び Haskellの言語仕様(ja)は式の評価順序を定めていないが、プログラムの計算量を見積もるには具体的な評価戦略を知っている必要がある。といっても事態は単純で、GHCを始めとする有名な処理系は全て「必要呼び(call by need)」という評価戦略を基にしている。(「Haskellは遅延評価をする言語である」と言われるが、この「遅延評価」という語は必要呼びを指す)。そこで、必要呼びに従った評価を手動で再現することができれば、Haskellプログラムの計算量をおおざっぱに見積もることができる。以下ではその手順を紹介する。 普通の言語の評価戦略は値呼び(call by value)と呼ばれる。値呼びと対比したときの必要呼びの大きな特徴は、関数を呼ぶ際に、引数を未評価のまま渡すことである。次の関数を考える。 inc :: Int -> Int inc n = n + 1 これを使っ

    eiel
    eiel 2011/12/27
  • 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 カスタマイズ例 - わからん
  • エラー処理を書いてはいけない

    エラー処理を書いてはいけない田中英行 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 鋭意翻訳中 (春頃発売予定) エラー処理を書いてはいけない日の概要エラー処理を抽象化しようというお話です 現在のエラー処理の抱える問題どのように解決するのか実際の例エラーは処理しなければならない エラー処理を書いてはいけな

  • 1 モナモナ言わない モナド入門 2011.12.3 山本和彦 2 お品書き 統一理論と大統一理論 コンテナの力の階層 内包表記 3 Q) なぜモナドが理解できないのか? A) 抽象的な概念だから 4 Q) 抽象の壁��

    1 モナモナ言わない モナド入門 2011.12.3 山和彦 2 お品書き 統一理論と大統一理論 コンテナの力の階層 内包表記 3 Q) なぜモナドが理解できないのか? A) 抽象的な概念だから 4 Q) 抽象の壁を突破するには どうすればいいのか? A) まず具体例を見てから 抽象化していくしかない 5 統一理論と大統一理論 6 物理学での抽象化 7 Haskell での抽象化 8 状態系統一理論 9 Parser データ定義 data Parser a = Parser (String -> [(a,String)]) Parser を生成する関数 pwrap :: a -> Parser a pwrap v = Parser $ \inp -> [(v,inp)] Parser を合成する関数 pbind :: Parser a -> (a -> Parser b) -> Par

    eiel
    eiel 2011/12/02
  • モナドとモナド変換子のイメージを描いてみた - melpon日記 - HaskellもC++もまともに扱えないへたれのページ

    最初に言っておくと、モナドって何なの?っていう答えは一切ないです。 自分にとってモナドは「とりあえず型さえ合わせておけば何かいろいろしてくれる奴」程度としか認識できていないので、そんな説明できないです。 で、そんな自分が脳内でどういう風にイメージしてモナドやモナド変換子の混ざったコードを書いているかというのを図に表してみました。 ここら辺の話を図にした感じです。 モナドを触ってみた - melpon日記 - HaskellもC++もまともに扱えないへたれのページ モナド モナドには return 関数と >>= 関数があります。 こんなイメージです。下側の線が普通の関数型の世界、上側の線がモナドの世界です。 どちらもモナド側の出力しか無いので、どちらかの関数を使ったら、モナドから脱出することはできません。 ただ、>>= 関数の右側が点線の箱になっていることが分かるでしょうか。 ここには、太

    モナドとモナド変換子のイメージを描いてみた - melpon日記 - HaskellもC++もまともに扱えないへたれのページ
    eiel
    eiel 2011/11/29
  • Haskellの楽しみ:<br>手続き操作型というパラダイム

    Haskellの楽しみ: 手続き操作型というパラダイム田中英行 tanakh@preferred.jp 2011/11/09 技術交流会 @日ユニシス 自己紹介 田中英行 (@tanakh)(株)Preferred Infrastracture 研究開発部門社内ライブラリ pficommon https://github.com/pfi/pficommon分散機械学習フレームワーク jubatus http://jubat.us/Haskell愛好家2003~Learn You a Haskell for Great Good!訳してます日の概要 ・ Haskellは 簡単 ・ Haskellは すごい ・ Haskellは 面白い ・ Haskell は簡単ですごく面白い ・ Haskell は面白くてすごいものが簡単に作れる (あとモナドの話少し) 最近のHaskellの話題Yes

    eiel
    eiel 2011/11/11
  • HaskellのArrow

    Arrowを学ぶ。Programming with Arrowsを読んでから、「Arrowのはなし」というニコニコ動画をみるのがわかりやすい。イメージは3番目が参考になる。 Programming with Arrows 『Arrowのはなし』西川仁 Haskell/Understanding arrows Arrowを使って奇数列を作ってみる。 0から始まる数列を&&&で分岐させて一方はそのまま戻して、もう一方はtailすることで1から始まる数列にして、合流したら足し合わせる。 Prelude Control.Arrow> let odds = (tail) &&& id >>> (uncurry (zipWith (+))) Prelude Control.Arrow> take 10 $ odds [0,1..] [1,3,5,7,9,11,13,15,17,19]

    HaskellのArrow
  • The Typeclassopediaを訳しました, The Typeclassopedia - #3(2009-10-20)

    ■ [Haskell] The Typeclassopediaを訳しました The Monad.ReaderのIssue 13に掲載されたThe Typeclassopediaという記事が、Functor, Monad, Monoid, Applicative, Foldable, Traversable, Arrowといったような型クラスについて良くまとまっていて、そのあたりを知りたい時の取っ掛かりになりそうだったので翻訳してみました。 作者のBrent Yorgeyさんからも許可がいただけたので公開します。翻訳に慣れていないので変な日語(特に専門用語の日語訳はかなり怪しい)があったり、そもそも間違っていたりするかもしれませんので、何か見つけたらコメントを頂けると助かります。 ■ [Haskell] The Typeclassopedia by Brent Yorgey <first

    eiel
    eiel 2011/11/02