タグ

haskellとHaskellに関するrydotのブックマーク (380)

  • From Lenses to Yoneda Embedding

    From Lenses to Yoneda Embedding Posted by Bartosz Milewski under Category Theory, Functional Programming, Haskell, Lens, Programming [6] Comments Lenses are a fascinating subject. Edward Kmett’s lens library is an indispensable tool in every Haskell programmer’s toolbox. I set out to write this blog post with the goal of describing some new insights into their categorical interpretation, but then

    From Lenses to Yoneda Embedding
  • 友利奈緒とコミュニケーションするアプリ - 純粋関数空間

    これは 友利奈緒 Advent Calendar 2015 の20日目の記事です。必死で未来から書いています。 友利奈緒とコミュニケーションするアプリ のようなものを作りました。たぶんこの辺にソースを置くと思います。バイナリはたぶんもうしばらくしたら配布するかもしれませんが、こんなツール使いたいと思う人があんまりいない気がするので、配布しないかもしれません。 追記:バイナリ配布しました。使ってみたいという奇特な方は、https://github.com/tanakh/tomorinask/releasesこちらからお試しください。 最近困っていたこと:Askリニューアル問題 ところで、Ask.fm という、どこからともなく質問がたくさんやってくる謎のサービスがあるのですが、このサイトが先日デザインをリニューアルしました。それはそれでいいのですが、大幅にリニューアルされてしまったせいで、僕に

    友利奈緒とコミュニケーションするアプリ - 純粋関数空間
  • 「第2期 H本読書会 in 秋葉原」を終えて #readhbon #haskell - セカイノカタチ

    こちらは Haskell Advent Calendar 2015 - Qiita の 21 日目の記事です。 昨日の記事は、String diagram のすすめ - PS でした。 H読書会とは? すごいHaskellたのしく学ぼう! 作者: Miran Lipovaca出版社/メーカー: オーム社発売日: 2012/09/21メディア: Kindle版購入: 4人 クリック: 9回この商品を含むブログを見る こちらのを輪読する読書会でした。 第2期ということで、去年の11月に始めたのですが、1年以上掛けて1冊読み終わりました。 大勢の方に参加いただいて、なんとか全て読みきることが出来て感無量です。 ありがとうございました。(__) の感想 今回、輪読対象とした「すごいHaskell楽しく学ぼう!」ですが、とても良いです。 実は、H読書会を開催する以前に2回読んでいたので、今

    「第2期 H本読書会 in 秋葉原」を終えて #readhbon #haskell - セカイノカタチ
  • String diagram のすすめ - PS

    こちらは Haskell Advent Calendar 2015 - Qiita の 20 日目の記事です。 前の日・・・Hakyllでブログを作る(実践編) - Wake up! Good night* 次の日・・・「第2期 H読書会 in 秋葉原」を終えて #readhbon #haskell - セカイノカタチ String diagram String diagram というのは 圏論の bicategory というのを、平面上の点と線を使って描くものなんですが、特にややこしい知識が無くても使える(使っている)、と思ったので記事にしました。 以下、圏論の知識は必要ありません。 垂直方向について 型を縦線で表現し、関数は縦線上のノードで表現します: 諸般の事情で四角になってますが、ノートに書くときは丸でも何でもかまいません。 定義域aが下になっていることに注意。 関数id = \

  • オートマトンで遊ぶやつを作った - Just $ A sandbox

    この記事はHaskell Advent Calendar 2015 18日目の記事です. Automatoy(オートマトン)で遊ぶやつを作ったので紹介します. github.com ブラウザで遊べる. 以下それっぽい解説. Automatoyについて http://myuon.github.io/automatoy/ "Def"タブでオートマトンを定義. "Check"タブで与えられた文字列のacceptance checkができる. "Conversion"タブでいくつかのサンプルオートマトンを読み込んだり, NFAをDFAに変換(いわゆるpowerset construction)できる. また, 右上のImport/Exportでjsonに変換したり, jsonを読み込んだりできる. もう少し扱えるオートマトンのバリエーションを増やしたり, acceptance checkにアニメー

    オートマトンで遊ぶやつを作った - Just $ A sandbox
  • Re: Haskellの勉強で詰まってる部分 - maoeのブログ

    mizchi.hatenablog.com Haskellを習得する上で難しいポイントだと思います。大きく分けると次の二つにまとめられるのではないかと思います。 コードの中で現れる識別子からそれが何なのかを探しづらい Cabalがつらい それぞれ個人的な見解を書いてみます。 コード中の識別子の探し方 モナドのところの <$> とか <*> とか、え〜どっちがApplicativeで何がFunctorだっけ、そもそもその定義はなんだったっけ。え〜あ〜〜〜みたいになる。 と名前空間の そして名前で役割を推測することが困難な事が多々ある。mapM_ とか、前述した演算子とか。いや mapM_ は map があって mapM があって、っていう段階があるのは理解しているけど、ソース読んでて突然出現するそれには全く対応できない。 はどちらも識別子から型がわかれば大部分が解決します。ありがたいことに近

    Re: Haskellの勉強で詰まってる部分 - maoeのブログ
  • Hspecベストプラクティス - fujimuradaisuke's blog

    Hspecベストプラクティス Haskell Advent Calendar 2015 の14日目のエントリーです。 イントロ Hspec はHaskellコミュニティにすっかり受け入れられたテスティングフレームワークと言ってよいかと思います。しかし!まだ確たるベストプラクティスは無いと言えるのではないでしょうか! Hspecの元となったRSpecはRubyコミュニティでデファクト・スタンダードとなっており、ベストプラクティスの蓄積があります。これを、Haskellの事情を鑑みつつ適用してみようという記事です。 Hspecのチュートリアル BDDのチュートリアル ソフトウェア・テストのチュートリアル ではないので、その辺りは別の記事を読んでください。 あと、オフィシャルのexampleがあるので、これに先に目を通しておくと話が早いかもしれません。 気になる点、賛同できないプラクティス、改善

    Hspecベストプラクティス - fujimuradaisuke's blog
  • プロファイラは本当に必須か?―パフォーマンスについて考える | POSTD

    最近、2つの出来事があり、私が行っているパフォーマンスへのアプローチ方法は、あまり広く知られていないようだと感じさせられました。 1つ目の出来事は、 redditでBufferBuilderを発表 した際に、初期のコメントで次のような質問をもらったことです。「Haskellを実行する時に、プロファイラを利用してコードのどの部分で処理が遅くなっているのか確認しましたか?」というものでした。もっともな質問ですが、私の答えは”ノー”でした。プロファイラは利用していません。なぜなら、Haskellのプロファイラで確認できる段階では既に遅すぎるからです。私はバッファを構築する効率的な方法を既に知っていました。境界チェックをしてから、保存(シングルバイトの場合)または複製(バイト列の場合)をするやり方です。これ以上の命令は意味がありません。ですから、BufferBuilderの開発にあたって最初にやっ

    プロファイラは本当に必須か?―パフォーマンスについて考える | POSTD
  • Haskellで生産性を高める-Pythonからの移行 | POSTD

    (注記:11/30、いただいた翻訳フィードバックを元に記事を修正いたしました。) 最近、Haskellでも生産性の高い作業ができるほどに、この言語を使いこなせるようになりました。定期的にPythonを使いもしますが、今ではWebプロトタイプ作成のほとんどをHaskellで行っています。それで、時間が経ってしまう前に、この言語の学習経験を通じて考えたことなどをまとめたいなと思っています。 データファースト これはどちらかというと動的言語から静的言語への移行に関しての考えなのですが、Haskellのデータ構造は、ほとんどの場合、データ宣言と型シグネチャで提示されるのに対し、Pythonの場合、おおむねコードによって暗黙に定義されます。 Pythonの関数について私が初めて抱いた考えは、「コードに何が書かれているか?」でしたが、Haskellでは、「データはどう見えるか? この関数は___を受け

    Haskellで生産性を高める-Pythonからの移行 | POSTD
  • FRPの話 - maoeのブログ

    Haskell Advent Calender 2012で久々にブログを書くということで、ついでにはてなダイアリーからはてなブログに移行してみた。記事やコメントはもちろんのこと、はてブも移行でき、なおかつundoもできるという素晴らしい仕様なので、安心して移行することができた。 さて、今回はFunctional Reactive Programming(FRP)の話。FRPとは、時間やシステム外部からの入力に対して応答するプログラムを関数的に表現する方法とでも言えばよいだろうか。 FRPというとまだ定番の実装もなく、実用にはほど遠いと考える人もいるかもしれない。実際、FRPの実装に関してはまだいろいろ研究・改良の余地があるとは思うものの、以前のように簡単にメモリリークするようなことも無く、最近では試してなるほど便利そうと思える段階にまでは洗練されてきていると思う。 FRPが登場してからの1

    FRPの話 - maoeのブログ
  • 正格評価と遅延評価(基本編)

    今回からスペースリークに関することに踏み入ります。 まずは正格評価と遅延評価の動作についてです。 型と動的な挙動 まず型についてはここでは触れません。Haskellの型は非常に複雑なものです。型についてメンタルモデルを構築する際もλ計算のシンプルさを念頭におくと非常に理解しやすいとは思いますが、ここでは扱いません。 なので型クラス(type class)や型パラメータ(parametric polymorphism)や型関数(type function)といったものは出てきません。 昔僕も静的な箇所と動的な箇所の違いが見えなかった感覚を少しだけ覚えていますが(スクリプト言語しか書いていないと陥りそうです)、静的な箇所とはプログラムを動作させなくても決定できるところを指すとしましょう。慣れればちゃんと項レベルと型レベルの違いはきちんとわかるものです(ここでは型レベルと項レベルの違いについても

    正格評価と遅延評価(基本編)
  • スペースリーク、その傾向と対策

    スペースリークの傾向とその対策を見ていきます。 ここでは3つのパターンを取り上げます。他のパターンがまだ見つかりそうな気がしているので、気がついた方は是非記事を書いてください。 注意事項 「サンクを積む」という表現を多用していますが、「関数適用によってサンクを大きくする」と言った意味合いで使っています。多分に誤用なので外では使わない方がいいと思います(と思ったらそういう表現を使うこともあるそうです) 以前の記事もそうですが、「簡約」は「評価」に統一してます 基方針 追記: 正格評価 無限ループをしない 必要ない式は評価しない 遅延評価 無限ループをしない 必要ある式はサンクを積まない サンクの必要とする空間と、潰した後の空間 サンクは必ずしも悪いものではありません。非常に大きなサンクの場合とそれを潰した場合に、どちらがメモリを消費するかは一概には言えないのです。 少し違いますが、わかりや

    スペースリーク、その傾向と対策
  • GitHub - SodiumFRP/sodium: Sodium - Functional Reactive Programming (FRP) Library for multiple languages

    Sodium - Functional Reactive Programming (FRP) library for multiple languages This is based on Flapjax, Yampa, scala.React and a number of other Functional Reactive Programming efforts, as well as a lot of personal experience. Enjoy. Status: C++ - complete, but the memory management is not quite right yet - in separate sodium-cxx repository C# - complete (source in dotnet folder, binaries in Sodiu

    GitHub - SodiumFRP/sodium: Sodium - Functional Reactive Programming (FRP) Library for multiple languages
  • Sodium(FRP)を使ってみた - Qiita

    Haskell Advent Calendar 2014 (18日目) 寄稿記事。 はじめに 独学でHaskellを学び始めて2年半が経ちました。圏論やモナド、その他重要な概念を何も理解できていませんが日々楽しくHaskellを使っています。そんな(初心者&底辺)のHaskellerが半年ほど前に無謀にも FRP(Functional Reactive Programming)*1に挑戦してみました。FRPのパッケージは幾つか存在しますが、一番元気良さそう(小並感)にみえたSodium*2 を選択しました。 悪戦苦闘の末、僅かばかりのノウハウを得られましたので、それに基いてSodiumの簡単な紹介記事を書かせて頂きたいと思います。 Sodiumとは Hackageに公開されているSodium Packageの説明ページに拠ると、Sodiumは汎用的な Reactive Programmin

    Sodium(FRP)を使ってみた - Qiita
  • 「参照透過である」とは、何から何への参照がどういう条件を満たすことを言うのか - Qiita

    関数型プログラミングが流行していることもあって、頻繁に耳にする「参照透過性」という用語について考えます。 ∥ 参照透過性 - Wikipedia その過程で目にした、Stack Overflow 上の Reddy 氏の発言が面白かったので、ザックリと訳します。 用語の起源と、それがプログラミング言語に導入された経緯 一応意味は分かってはいるんですが、なぜ「副作用のない関数呼び出し」やら「変数への再代入の禁止」といった特性を「参照透過性」と呼称するのかが分かりませんでした。この場合の「参照」は、何が何を参照することであり、また、それがどういう状態にあることを「透過である」としているのかが、通り一遍調べてみても分かりませんでしたので、掘りに行ってきます。 英語Wikipedia の方には、この考え方がプログラミングの概念として導入された経緯についての論文が参考文献として挙げられています。

    「参照透過である」とは、何から何への参照がどういう条件を満たすことを言うのか - Qiita
  • Write You a Haskell

    Write You a Haskell Building a modern functional compiler from first principles Stephen Diehl January 2015 (Draft) Write You a Haskell by Stephen Diehl Copyright © 2014-2016. www.stephendiehl.com is written work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. You may reproduce and edit this work with attribution for all non-commercial purposes.

  • 関数型ストリーム処理勉強会 (2015/11/07 13:00〜)

    ストリーム処理ライブラリについて学ぶ 各種ストリーム処理ライブラリについて学びましょう。 Haskellのライブラリをメインに据えていますが、別言語のライブラリに関する発表でも問題ありません。 こんな方におすすめ Haskell(やScala)である程度プログラムを書けるようになってきたけれど、状態や入出力が絡むのがうまく書けない! ストリーム系のライブラリってたくさんあるけれど、どう違うの?どれを使えばいいの? どんな発想でああいったライブラリができるの? 発表者募集 発表者を先着で募集中です。 発表枠に登録した方を順次管理者に登録するので、発表タイトル編集は各自で行ってください。発表者になってタイトルも決まったのに、しばらく経っても管理者にしてもらえなかったら、管理者の誰かにtwitter上で問い合わせるなどしてください 発表時間目安 発表は20~40分くらい(発表者数によって増減?)

    関数型ストリーム処理勉強会 (2015/11/07 13:00〜)
  • What I Wish I Knew When Learning Haskell

    What I Wish I Knew When Learning Haskell Version 2.5 Version This is the fifth major draft of this document since 2009. HTML Version Screen PDF Printable PDF EPUB Version Kindle Version Pull requests are always accepted for changes and additional content. This is a living document. The only way this document will stay up to date is through the kindness of readers like you and community patches and

  • Haskell-rerational-recordでDB操作するのが楽しすぎる件〜その1〜 - Creatable a => a -> IO b

    どーも、いつものちゅーんさんです。 一ヶ月くらい前に、もくもくHaskell会というハッカソンで日比野さん(@khibino)とご一緒したので、 日比野さんの開発したhaskell-rerational-record(以下HRR)というライブラリを(色々教わりまくりつつ)いじいじしていました。 お仕事のちゅーんさんはわりとゴリゴリSQLを書くわけですけど、あの、あれですよ、辛いんです。 もくもく会でも日比野さんと只管愚痴りまくってましたけど、SQLとかね、こんなもの人間の書くものじゃないです。 ね? そんなわけで、Haskellを用いて如何に苦しまず楽しくRDBと戯れるか、というのが日のお題です。 HRRの特徴 基的にはSQLをモナディックに生成するためのライブラリで。 普通のアプリケーションで必要になるようなほとんどのクエリはこれだけで書く事ができます。 HRRには、ざっと次のような

    Haskell-rerational-recordでDB操作するのが楽しすぎる件〜その1〜 - Creatable a => a -> IO b
  • Haskellの多相関数と自然変換(というか射の族)について - claustrophobia

    (Kan拡張のとこ以外)読み終えた。随伴がモナドを伴う、というのは知ってたけど具体的にHaskellコードに落とせるというのは面白い。 / Haskellと随伴 by @myuon_myon on @Qiita http://t.co/AiN2UsRJVX— xenophobia (@xenophobia__) 2014, 12月 5 そんなことより、多相関数を与えることとHask -> Haskな関手間の自然変換を与えることとがほぼ対応する、という事実に気付かされたので意義深かった。 > アドベントカレンダー4日目記事— xenophobia (@xenophobia__) 2014, 12月 5 これなんですが、以前も聞いた気がするし*1、忘れないように備忘録をば。 たとえば、HaskellでInt -> Double型の関数を1つ与えるというのは、Hask圏において対象Intから対象