タグ

Haskellに関するNyohoのブックマーク (241)

  • 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

  • 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
  • An ASM Monad

    Two weeks ago, I briefly introduced a way of representing Assembly Language in Haskell code, in order to illustrate the programming paradigm to which it belongs. In a move that is sure to scare off both high-level and low-level programmers, I shall now explain how a Monad implementing 6502 Assembly can be created. In real code, this would use more abstract or efficient types, but in this article I

  • Stateモナドがわかればモナドがわかる - セカイノカタチ

    この記事は、Haskell Advent Calendar 2014 23日目の記事です。 僕自身が、駆け出しHaskellerなのであまり難しいことは書けません。きっと中級以降の人には常識的な話題で「何を今更・・・何周遅れだよ(´・ω・`)」みたいな微妙な話ですが、お付き合いください。 しかし、Haskellと言うとモナドみたいな風潮は何とかならんのか・・・。 なりません!(`・ω・´)シャキーン モナドにも種類がある ということで、モナドの話です。 モナドというのは、Monadという型クラスです。型クラスというのJavaで言うとインターフェースのようなものです。 これを実装した上で、モナド則と言われる規則をクリアし、厳しい試練に耐えぬいた型だけがMonadになれます。大変ですね。 例えば、こんな型がモナドとして知られています。 Maybe [] Identity Either Stat

    Stateモナドがわかればモナドがわかる - セカイノカタチ
  • Haskellで物理を殴ってレベルが上がった話 - Qiita

    事情により二日ばかし遅延評価となってしまい申し訳ありませんm(_ _)m 次元付き計算がいかに重要か 皆さん、量の計算をするうえで、単位を間違えちゃいけないよ、って教わったと思います。 180cm + 55kg = 235年  とかいう式は間違っていて、意味を成しませんよね。 間違えるとどんなことがおこるかって?テストに落ちるとかでしょうか。 1983年には、カナダ航空の飛行機が、燃料補給時に単位を間違えたために(間違いの質は、22300 kgの燃料を補給すべきところ、22300 ポンド しか補給しなかったというもの)飛行中にまさかの燃料切れに陥り、お祭り会場になっていた廃空港に緊急着陸を強いられ、あわや大惨事、というギムリ・グライダー事件が起こっています。 1999年、NASAの火星探査衛星マーズ・クライメート・オービターは、制御プログラムの力の単位にポンド重とニュートンが混在していた

    Haskellで物理を殴ってレベルが上がった話 - Qiita
  • Haskellのエンジニアは二流なのか?(答えはノーである) | POSTD

    挑発的なタイトルによって誰かが気分を害してしまう前に、私はこの問いに対する答えも書いてしまうことにしました。答えは“ノー”です。しかしこのテーマには、なかなか興味深い議論があるのです。HaskellやErlangや、特にClojureなどのあら探しをするつもりはないのでしょうが、Piaw NaはQ&AサイトQuoraの あるアンサー で以下のようにコメントしています。 プログラミング言語を固定するのは二流のエンジニア/コンピュータサイエンティストである証です。 [中略] 私がErlangのサーバに携わるポジションの採用をした時も、Erlangのスペシャリストだと言うエンジニアより、優秀なオールラウンダーのエンジニアを雇ってErlang(これに限らず何でも)を学ばせてそのポジションを埋める方が断然いいと感じました。 Na氏の意見は1990年代に設立されたGoogleAmazonなどの技術

    Haskellのエンジニアは二流なのか?(答えはノーである) | POSTD
  • 木(tree)で遊ぶ - 連載 Haskellプログラミング(『情報処理』46巻5号 2005年5月)

    46 5 2005 5 564 n 1 4 4 -1 5 n data data DumbTree = Empty | Fork DumbTree DumbTree data DumbTree Empty ( ) 2 DumbTree Fork nobsun@sampou.org IPSJ Magazine Vol.46 No.5 May 2005 565 DumbTree ( ) Empty Fork ( ) -- trees (>0)DumbTree trees :: Int -> [DumbTree] trees 1 = [Empty] trees n = concat [ joins ls rs | (ls,rs) <- [ lrs xs ys | (xs,ys) <- splits1 n ]] -- splits1 (>0)(>0)2 splits1 :: Int -> [(In

  • HaskellでOSを作る試み - みずぴー日記

    函数型なんたらの集い 2014 in Tokyo - connpassで、前にやっていたajhcでmini-osを書いていたときの話をしてきた。 下書き せっかく書いたので発表のときの下書きをそのまま載せておく。 スライドを作るときに一部変えたり、下書きの段階では図をいれてなかったりするが、おおまかな流れは変わっていない(はず)。 自己紹介 みなさんこんにちは。地方枠で参加したmzpです。 普段は名古屋でRailsプログラマやってます。 導入 突然ですが、OSを作ってみたいですよね! プログラマたるもの1度はOSとかエディタは自作してみたくなりますよね!!そして、自作するなら当然、愛してやまない関数型言語を使いたいですよね。 そうです、この発表は関数型言語を使って自作のOSを作ろうとした話です。 整理 さて、ひとことでOSといっても様々な種類があるので、それを整理しておきましょう。 デスク

    HaskellでOSを作る試み - みずぴー日記
    Nyoho
    Nyoho 2014/11/04
    これはなんか怖そう! (すごそう)
  • 内包表記について、すごい合同勉強会で話した | そんなこと覚えてない

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

    Nyoho
    Nyoho 2014/11/04
    普通の集合の書き方、みんな好きそうでよかったよかった。
  • USトップ大学でも関数型プログラミングが余り教えられていない現実 | POSTD

    数カ月前、私たちは一部の言語が他の言語に比べて受け入れられやすい理由を調べた SocioPLT リサーチプログラムについて 投稿 しました。その 調査 の一環として、2000年から2010年の期間内にSourceForgeのプロジェクトで使用された言語を調べて頻度別にランク分けしたのですが、この結果で興味深かったのは、上位20の言語の中に関数型言語が1つもなかったということです。 教育機関のプログラミング言語研究者は関数型言語を好む傾向にあるため、この事実を残念なことと思うでしょう。しかしながら、このような事態に陥った原因の一部は、私たち学術研究者自身にあるのかもしれません。関数型言語が“現実の世界”で受け入れられるためには、大学などの機関がそれを教えなければならないからです。この投稿を通じて、そうした教育プログラムを持つ大学がほとんどないことが分かるでしょう。プログラミングの教育課程にお

    USトップ大学でも関数型プログラミングが余り教えられていない現実 | POSTD
  • 関数型プログラミングとオブジェクト指向の抜き差し可能な関係について整理して考える - モナドとわたしとコモナド

    Googleで適当に検索すると とズラリと出てくる。 オブジェクト指向 v.s. 関数型プログラミング 関数型とオブジェクト指向という一見相反するプログラミングパラダイムの併用について理解した プログラマが知るべき97のこと/関数型プログラミングを学ぶことの重要性 新人プログラマに知っておいてもらいたい人類がオブジェクト指向を手に入れるまでの軌跡 関数型プログラミングとオブジェクト指向の抜き差しならない関係について整理して考える とそれなりに参考になりそうな情報はあるものの、無駄に複雑化されたオブジェクト指向をストローマンにするような記事ばかり(それだけ今までのオブジェクト指向にみんなうんざりさせられているのだろう)で、そろそろきちんと自分自身「関数型プログラミングとオブジェクト指向の切り離され方」についてはっきりさせておきたい、と考え、概念整理した結論を書きます。 まず端的な結論 結論を

    関数型プログラミングとオブジェクト指向の抜き差し可能な関係について整理して考える - モナドとわたしとコモナド
  • Haskell 2014: Writing NetBSD Sound Drivers in Haskell, Kiwamu Okabe

  • 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

    Nyoho
    Nyoho 2014/09/06
    名前でアクセスするようにできて便利だな
  • Haskellを愛する若者たちへ | POSTD

    この手紙は、”熟練者”ならではの知識を語るものではありません。新人かベテランかに関わらず、私たちの誰もが繰り返し学び、覚えておくべきことについて書いています。ここでは、一般的な傾向や、聞けばなるほどと思うような傾向、重要とされていることを新たに学んで興奮している時に見られる傾向を紹介します。また、学んだことの面白さや重要性を人にきちんと伝わるように話すことの難しさについてもお伝えします。この手紙はかなり具体的に書いています。一般的な話をするなら具体的なことも併せて話さなければ理解してもらえないと悟ったからです。これは代数的構造やその他の抽象的な概念についても言えることですね。この手紙には、私が頭に入れておきたい、また皆さんに共有したいアドバイスが詰まっています。インターネット上で適切とは言えない振る舞いをしている人に出くわした時、そんなことはめったにないでしょうが、そんな時に思い出したい内

    Haskellを愛する若者たちへ | POSTD
  • Haskellによる8086逆アセンブラ開発入門 - Qiita

    8086(16bit x86)の機械語に触れる導入として、Haskellによる逆アセンブラ開発の取っ掛かりを説明します。ここから機械語の勉強を始めることを想定していますので、機械語に関する知識は特に前提とはしていません。 Haskellは初歩的な機能のみ使います。以下の内容を理解していれば十分です。 Haskell 超入門 HUnit 超入門 練習の解答例は別記事に掲載します。 【解答例】Haskellによる8086逆アセンブラ開発入門 この記事のコードをまとめたリポジトリです。 https://bitbucket.org/7shi/ikebin-hs-2 この記事は勉強会のテキストとして使用していました。 機械語入門 - connpass この記事には姉妹編があります。 8086による機械語入門 2015.11.09 2進数 文字列で指定した2進数を数値に変換する関数です。HUnitのテ

    Haskellによる8086逆アセンブラ開発入門 - Qiita
  • GitHub - RaphaelJ/friday: Fast image IO and transformations.

    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 - RaphaelJ/friday: Fast image IO and transformations.
  • Summer of Code on Emacs!

    This summer I've been participating in Google Summer of Code, as I did some years ago. My aim was the same: to make it easier for Haskell developers to interact with their code. But instead of Eclipse, I've focused on another very well-known editor: Emacs. In particular, I've been extending the already excellent ghc-mod. During the last year I've turned increasingly jealous of the Emacs modes for

  • https://github.com/serras/emacs-haskell-tutorial/blob/master/tutorial.md

    https://github.com/serras/emacs-haskell-tutorial/blob/master/tutorial.md
  • Haskell 超入門 - Qiita

    Haskellで簡単なプログラムを書くのに最低限必要な基礎文法を取り上げます。練習では再帰に慣れることに重点を置きます。再帰によるリスト処理の例として各種ソート(挿入ソート、バブルソート、マージソート、クイックソート)を紹介します。ラムダやモナドなどの発展的な内容には触れませんのでご了承ください。 シリーズの記事です。 Haskell 超入門 ← この記事 Haskell 代数的データ型 超入門 Haskell アクション 超入門 Haskell ラムダ 超入門 Haskell アクションとラムダ 超入門 Haskell IOモナド 超入門 Haskell リストモナド 超入門 Haskell Maybeモナド 超入門 Haskell 状態系モナド 超入門 Haskell モナド変換子 超入門 Haskell 例外処理 超入門 Haskell 構文解析 超入門 【予定】Haskell 継続

    Haskell 超入門 - Qiita
    Nyoho
    Nyoho 2014/08/20
    7shiさんのHaskell入門連載
  • モナド教

    前提知識:モナド モナドを理解せずともモナド教を信ずることは出来ますが,理解していればより深く納得できるでしょう. 操作 :: 型 -> 型 は,"型"から"型"へ写す"操作"の存在を表します. モナドの文脈 m が必要とする2つの操作: return :: a -> m a で,値を保ちつつ文脈 m の中に入れ込むことが出来ます. (=<<) :: (a -> m b) -> (m a -> m b) で,「値を文脈に入った別の値へ写す操作」を「文脈に入った値を同じ文脈に入った別の値へ写す操作」に変換します. id :: a -> a は値をそのまま返す操作です. id を =<< で変換して得られる操作 join :: m (m a) -> m a で,二重に文脈に入った値を一重の文脈に入った値に戻すことが出来ます. 文脈の値から生の値を取り出す型 m a -> a を持つ操作は,一般

    Nyoho
    Nyoho 2014/08/14
    最後の寄進が欲しいものリストでワラタ