Haskellに関するtrashtoyのブックマーク (17)

  • 関数型プログラミングから予測可能プログラミングへ :: Igreque -> Info

    関数型プログラミングから予測可能プログラミングへ by Yuji Yamamoto on July 25, 2015 なんだか興に乗ってきたので、私もポエムめいたものを書いてみようと思います♪ このシリーズの目次はこちら 要約: ポエムなんてうんざりな人へ 「Haskellが関数型プログラミングの王道だよ」という理解は、誤解のもと。 今後このシリーズで言う「関数型プログラミング」とは、 「純粋な関数」を主に使用して行うプログラミングのこと。 Haskellの当によいところは 「プログラムの振る舞いを、コードを実行せず、読んだだけで予測できるようにする」という点。 動機: なぜ書くのか ここでは、私がHaskellをなぜ好むのか、 いわゆる「関数型プログラミング」との関係に触れつつ説明することで、考えを少しずつまとめたい。 一つの記事には収まらないので、複数の記事に分けてシリーズとする。

    trashtoy
    trashtoy 2015/07/27
    黒魔術を駆使してやりたいことを簡単に素早く作れる!より、自由度を犠牲にしてでも後でメンテする人に優しい言語仕様が好き。この業界に長く携わるほど、予測可能性の重要さを身にしみて感じる
  • Haskell の Monad とは言語内DSLのフレームワークである - あどけない話

    この記事は、Haskellを勉強してある程度分かったけど、Monadで挫折した人のための記事です。10分間で、Monadに対する納得感を得ることを目的としています。他の言語でいう「モナド」にも通用する内容ですが、Haskell の文法や用語を用いますので、他の言語の利用者に分かるかは不明です。 Haskellを勉強したのですから、 代数データ型 型クラス は分かっていることにします。Monad は、単なる型クラスの一つで、それ以上でもそれ以下でもありませんから、この二つが分かってないと話になりません。 また、言語内DSL(以下、DSLと略記)という考え方を知っていることも仮定します。Monad とは、DSLのフレームワークという直感を与えるのが、この記事の主眼ですからね。 さらに、構造化定理をいう単語を聞いてもビビらない人を想定しています。逐次、反復、分岐があれば、計算しうる計算はすべて記

    Haskell の Monad とは言語内DSLのフレームワークである - あどけない話
  • Haskell · How I Start.

    My name is Chris. I teach Haskell to people that are new to programming and as well as long-time coders. Haskell is a general purpose programming language that is most useful to mere mortals. I’m going to show you how to write a package in Haskell and interact with the code inside of it. Installing tools for writing Haskell code We’re going to use Stack to manage our project dependencies, compiler

  • Haskell 超入門 - Qiita

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

    Haskell 超入門 - Qiita
  • Haskellな人がPythonにトライした結果

    CheckiO http://www.checkio.org/ にトライした@tanakhさんによる、Haskellから見たPythonが面白かったので、まとめてみました。 ※抜けが多分にあるかと思います orz

    Haskellな人がPythonにトライした結果
    trashtoy
    trashtoy 2014/02/19
    タイトルの末尾に草を生やしたら低俗なまとめサイトになりそう。リファレンスのノウハウという観点で言語を比較したことはなかったなあ
  • モナドハンズオン前座

    「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14)parrotstudio

    モナドハンズオン前座
  • 絵で見るモナド · eed3si9n

    2012-08-21 John Wiegley さんの “Monads in Pictures” を翻訳しました。翻訳の公開は人より許諾済みです。翻訳の間違い等があれば遠慮なくご指摘ください。 2012年8月20日 John Wiegley 著 2012年8月21日 e.e d3si9n 訳 これはモナドのチュートリアルではないし、ここには数学用語も出てこない。稿は、既にモナドを一応使えるぐらいには習った人を対象とする。視覚化することで、何のために何をやっているかが明らかになるはずだ。 関数 モナドに対する直感を得る一つの方法として関数からモナドへの抽象化をたどるというものがある。関数が何をやっているのかを簡単な絵で表してみよう。Haskell の関数の呼び出しの構文を上に、同じ演算を視覚化したものを下に置いた: 関数はある値 a を投射 (map) して別の値 b を得る。中で何が起

    trashtoy
    trashtoy 2012/08/22
    PHPでクロージャとarray_mapとarray_filterが自由自在に使えるようになったので途中までは余裕で読めたけど最後のほうでやっぱり理解が追いつかなかった残念。
  • Haskell での例外処理 - あどけない話

    リツイート数が30を超えたので、Haskell での例外処理について説明します。僕が思うに、Haskell での例外処理が分かりにくいのには、2つ理由があります。 ライブラリの混乱 パラダイムの違い 歴史的経緯により、Prelude にも Control.OldException にも Control.Exception にも catch があります。歴史的経緯を説明するのは面倒なので、これだけ覚えて下さい。「Control.Exception だけを使って、それ以外は忘れる」 そもそも純粋関数型で catch とか言われても分からないかもしれません。Haskell では、純粋な関数と IO とでは、例外処理の方法が異なります。命令的な catch などを使うのは IO です。純粋な関数には Maybe か、Either を使います。 純粋な関数 純粋な関数では、原則として例外を投げてはい

    Haskell での例外処理 - あどけない話
  • ミラクルはすける勉強会#0

    Apache BigtopによるHadoopエコシステムのパッケージング(Open Source Conference 2021 Online/Osaka...NTT DATA Technology & Innovation

    ミラクルはすける勉強会#0
  • Haskellで書かれたWebフレームワーク「Yesod」のチュートリアル | gihyo.jp

    YesodというHaskellで書かれたWebフレームワークで簡単なアプリケーションを作成するチュートリアル記事です。 最近は関数型プログラミングの評価が高まりHaskellの書籍や情報が増えてきましたが、Haskell自体や関数型プログラミング特有の概念がネックになり、アプリケーションを作り上げることを楽しむリソースがあまり多くありません。記事執筆者はこの問題点を指摘し、当の初心者向けに書かれたドキュメントが足りないことからこの記事を作成するに至ったようです[1]⁠。 Haskellの主要Webフレームワークには、Yesod、Happstack、Snapの3つがありますが、その中で比較的初心者が取り組みやすくコミュニティが活発なことからYesodを取り上げています。このチュートリアルを読むにあたって、他言語のWebフレームワークを経験しているのであれば特にHaskell自体の知識は必要

    Haskellで書かれたWebフレームワーク「Yesod」のチュートリアル | gihyo.jp
    trashtoy
    trashtoy 2012/02/27
    時間を作ってやってみたいー
  • エラー処理を書いてはいけない

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

  • Haskellの講義に関するQ&A - あどけない話

    岡山大学で、関数プログラミングの講義を一コマ担当しました。資料は、函数プログラミングの集いで使った関数プログラミングの道しるべを流用しました。ちゃんと用意しなくて、講義を受けた学生には申し訳ないです。 講義内容に関して質問を頂きました。同じような疑問を持つ人も多いと思いますので、担当教官の許可を得てここに公開します。 永続データプログラミングの意義は分かったが,破壊しないと効率が悪いのではないですか.配列のような構造が世の中には多い気がします.メモリは足りなくなりませんか. 基的に永続と呼ばれているデータは、共有の効率が高く、しかも不要になった部分はすぐに GC に回収されます。また、GHC の GC はすごく優秀であることが知られています。 Haskell では、下位のレイヤーではデータを破壊できて、たとえば固定長のバッファーを使い回すといったことも可能です。ただ、それは普通のプログラ

    Haskellの講義に関するQ&A - あどけない話
  • パラダイムとしてのモナド ~ Monad as a Paradigm ~ - 純粋関数空間

    昨日、日ユニシス様にて技術交流会が開催されまして、 そこで講師として発表させて頂きました。 Haskellの話ということで、どういう話にするか悩みましたが、 プログラミングモデルからHaskellの面白さを語るという いつにもなく(あるいはいつもどおりの)無謀な内容になりました。 ぎりぎりまでどう言うシナリオにするか悩んだ末、これまたいつもどおりの 取り留めのない話になってしまいましたが、 面白かったといってくださる方がいてよかったです。 前半は私が最近面白いと思ったHaskellのライブラリ・アプリケーションの話を織りまぜつつ Haskellの魅力を紹介するパートで、 後半は最近の私のモナドに関する持論を展開するという謎パートです。 モナドというのは何者なのか なぜモナドなのか モナドには何が出来るのか なぜHaskellでモナドを扱うのか IOモナドとは何なのか これらを解き明かしつ

    trashtoy
    trashtoy 2011/11/10
    今までいろんなドキュメントを読んで挫折してきたけどちょっとだけ分かった気がする
  • モナドとモナド変換子のイメージを描いてみた - melpon日記 - HaskellもC++もまともに扱えないへたれのページ

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

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

    この項目では Haskell に関連する内容に限って圏論の概観を与えることを試みる。そのために、数学的な定義に併せて Haskell コードも示す。絶対的な厳密さは求めない。そのかわり、圏論の概念とはどんなものか、どのように Haskell に関連するかの直感的な理解を読者に与えることを追求する。 圏の導入[編集] 3つの対象A, B, C、3つの恒等射, , と、さらに別の射, からなる単純な圏。3つめの要素(どのように射を合成するかの定義)は示していない。 質的に、圏とは単純な集まりである。これは次の3つの要素からなる。 対象(Object)の集まり。 ふたつの対象(source objectとtarget object)をひとつに結びつける射の集まり。(これらはarrowと呼ばれることもあるが、Haskellではこれは別の意味を持つ用語なので、ここではこの用語を避けることにする。)

  • 第0回 スタートHaskell まとめ#0

    量が多いので全部取得できないと思います。20時の段階で取得できたもの全て載せときます。 ATND: http://atnd.org/events/17468 14時半以前のツイートを、取得できる範囲でまとめました。 続きを読む

    第0回 スタートHaskell まとめ#0
  • 2011年に Haskell を始める人のために - あどけない話

    適切な一歩を踏み出すか否かは、大きな違いを生みます。この記事では、2011年に Haskell を始める人のために、著者が考える最適な入門方法を示します。 Haskell Platform をインストールする 昔人気のあった Hugs は、もう保守されていません。現在は、GHC の時代です。GHC とライブラリをパッケージ化した Haskell Platform をインストールして下さい。 インタープリタが使いたい場合は、付いてくる ghci を使います。 コンパイラ -- ghc インタプリタ -- ghci スクリプト -- runghc GHC マニュアルの日語訳もあります。 プログラミングHaskell 次に、プログラミングHaskellを読んで関数プログラミングの「こころ」を理解しましょう。 プログラミングHaskell 作者: Graham Hutton,山和彦出版社/メー

    2011年に Haskell を始める人のために - あどけない話
  • 1