タグ

haskellに関するobaratchのブックマーク (26)

  • 私とテストと自動化と - あどけない話

    何度か講演でこの話をしたのだが、気が向いたのでエッセンスを書き下しておこうと思う。 テスト駆動という言葉が流行る前にプログラマとなった私は、当初どのようにテストを書いてよいのか分からなかった。そんなとき、(当時はオーム社で現在はラムダノートの)鹿野さんから「ビューティフルコード」を献していただいた。分厚いなので、興味ある章から読んでいった。その一つがアルベルト・サボイア氏が書いた7章「ビューティフル・テスト」だ。 ビューティフルコード (THEORY/IN/PRACTICE) 作者:Brian Kernighan,Jon Bentley,まつもとゆきひろオライリージャパンAmazon この章では、例として二分探索が取り上げられる。二分探索のアイディアが出されたのは1946年だが、バグのない実装ができたのは12年後だという。実際に実装してみると分かるが、ソートされた配列の中に目的の要素が

    私とテストと自動化と - あどけない話
  • [入門]関数プログラミング―質の高いコードをすばやく直感的に書ける! 記事一覧 | gihyo.jp

    運営元のロゴ Copyright © 2007-2024 All Rights Reserved by Gijutsu-Hyoron Co., Ltd. ページ内容の全部あるいは一部を無断で利用することを禁止します⁠。個別にライセンスが設定されている記事等はそのライセンスに従います。

    [入門]関数プログラミング―質の高いコードをすばやく直感的に書ける! 記事一覧 | gihyo.jp
  • 我田引水的な「関数プログラミングの入門」資料紹介 - あどけない話

    これは、Haskell Advent Calendar 2021の2日目を埋めるために書いた記事です。実は単に僕が作った「関数プログラミングの入門」の資料の宣伝です。 ちなみに、僕の関数プログラミングの定義は「不変データプログラミング」であり、おそらく最も厳しい定義です。なので内容が分かれば、関数プログラミングに入門できた言ってもよいのではないかと思います。 関数プログラミングことはじめ 僕は毎年、岡山大学の三年生に向けて、2コマで関数プログラミングを教えています。その資料が、「Cプログラマーのための関数プログラミングことはじめ」です。岡山大学工学部情報系学科の学生は、C言語を習っているので、C言語に似た文法を独自に定義して、関数プログラミングを説明しています。 [入門]関数プログラミング [入門]関数プログラミングは、WEB+DB PRESS Vol.67に掲載された記事です。編集部のご

    我田引水的な「関数プログラミングの入門」資料紹介 - あどけない話
  • 関数型プログラミングのFunctorって何が嬉しいの? - Qiita

    関数型プログラミング言語を勉強していると、Monadだけでなく、FunctorとかApplicativeなど、オブジェクト指向に慣れ親しんだプログラマには聞きなれない言葉が出てきます。 今回は自分の勉強も兼ねて、Functorの使い所の代表的なパターンを見てみます。 ※筆者は圏論の専門家ではないので、あくまでアプリケーションを作るプログラマ視点で、Functorの概要を整理しています。 Functorのおさらい Functorのおさらいをするにあたり、Haskellを説明に使用します。 HaskellでのFunctorのソースコードを抜粋します。 以下、https://hackage.haskell.org/package/base-4.12.0.0/docs/src/GHC.Base.html#Functorより抜粋。 Functorは「fmap」という関数を提供します。fmapは「引数

    関数型プログラミングのFunctorって何が嬉しいの? - Qiita
  • Haskell

    Skip to the content. Haskell Haskell - An advanced purely-functional programming language 1990 – サイモン・ペイトン・ジョーンズ、ポール・フダック、フィリップ・ワドラー、デミ・ムーアの夫、ならびに動物の倫理的扱いを求める人々によって構成される委員会により、遅延評価を行う純粋な関数型言語Haskellが作られる。副作用の制御に使われるモナドの複雑さのため、Haskellには抵抗を持つ人々がいる。ワドラーは批判を和らげるために、こう語っている。「モナドは単なる自己関手の圏におけるモノイド対象だよ。何か問題でも?」 出典: 不完全にしておよそ正しくないプログラミング言語小史 Index Haskell: 純粋関数型プログラミング言語 環境構築/エコシステム 入門/チュートリアル 基文法 再帰 データ

  • 「Haskellのモナド完全に理解した」試験問題

    Haskellは勉強したけどモナドを当に理解したって言えるのか自信がない… \そんな人向けの試験問題を作りました!/ これから実施する試験問題を、10問中8問正解すればあなたはHaskellのモナドを完全に理解しています。私が保証します! それではさっそく〜〜 第一問 まずは緊張をほぐしましょう。 Haskellの Monad は○○○○である ○○○○に当てはまるのは以下の選択肢のうちどれでしょう? 型 関数 型クラス 型シノニム 答え

    「Haskellのモナド完全に理解した」試験問題
  • プログラミングする際に今日も役立ってる文献 - HackMD

    # プログラミングする際に今日も役立ってる文献 プログラミングを独学する上で役立つ(役立った)書籍を紹介する流れが 最近ちらほら見受けられて読んでいて非常に楽しいので、 見てるばっかりでなく自分も出

    プログラミングする際に今日も役立ってる文献 - HackMD
  • モナドのすべて Haskell におけるモナドプログラミングの理論と実践に関する包括的ガイド

    モナドのすべて Haskell におけるモナドプログラミングの理論と実践に関する包括的ガイド Version 1.1.0 このチュートリアルは、モナドの概念とその関数プログラミングにおける応用に ついて、初中級の Haskell プログラマにわかりやすく、利用価値があるような 解説をすることを旨としています。読者は Haskell になれていることを前提と しますが、モナドに関する経験は要求していません。このチュートリアルは、多 くの題材をカバーしています。後半のセクションでは、前半の題材をよく理解し ていることを前提とします。順をおって、モナドプログラミングを例示するため のサンプルコードがたくさん用意されています。一読で、すべての題材を吸収し ようというのはお勧めできません。 このチュートリアルは 3 つの部分で構成されています。最初の部分は、 関数プログラミングにおけるモナドの基

  • モナドを理解する - 迷える者への手引き

    いずれにせよ、システムの状態が時間の関数であり、そのため時間は考慮しなければならない余分な要素となります。"xの値は何?"と問い合わせることは実際できません。代わりに、"時間tにおけるxの値は何?"と問い合わせなければなりません。これではコードを判断するのが難しくなり、複雑な要素が増えます。結論としては... 状態あり: ダメ! 状態なし: グッド! 式とアクション 式とは値を持った文です。たとえば以下のコードを考えてみましょう。 x = 5 y = x + 7 x = y + 1 最初のxは値が5であるという式です。最後のxは値が13であるという式です。コードは他の式も含んでいます。たとえば真ん中の行は、x + 7が12という値であるという式です。 ほとんどのコンピュータ言語では、キーボードから読み込むコマンドは式であり、その式は値を持っています。次の文を考えてみましょう。 x = ne

    モナドを理解する - 迷える者への手引き
  • Functors, Applicatives, And Monads In Pictures - adit.io

    Written April 17, 2013 updated: May 20, 2013 Here's a simple value: And we know how to apply a function to this value: Simple enough. Lets extend this by saying that any value can be in a context. For now you can think of a context as a box that you can put a value in: Now when you apply a function to this value, you'll get different results depending on the context. This is the idea that Functors

  • lens.lhs

    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

    lens.lhs
  • Literate Haskell (.lhs) and Haddock

    At the moment I'm only using Haddock but after seeing some really interesting examples (e.g. this gist) of literate Haskell, I'm interested in trying it out in a project. The questions I got, are: What do you write as Haddock comments and what do you write in the literate part? How do you scale literate programming to multiple files? Can anyone point me to an example where literate programming is

    Literate Haskell (.lhs) and Haddock
  • All About Monads - HaskellWiki

    All About Monads is a tutorial on monads and monad transformers and a walk-through of common monad instances. You can download a PDF version here. And here is a version of the article which includes source code. Understanding Monads Introduction What is a monad? If you're approaching Haskell monads a little nervously, that's understandable. You've probably heard that monads are a very powerful cod

  • Real World Haskell

    Welcome to Real World Haskell This is the online home of the book “Real World Haskell”. It is published by O'Reilly Media. The first edition was released in November 2008. We make the content freely available online. If you like it, please buy a copy. Buy online For your convenience, we have included links to the book through sellers in several countries. O'Reilly (USA, UK) Powell's Books (USA) Am

  • モナドって結局何なのよ? — join to Monad v0.1.3 documentation

    モナドって結局何なのよ?¶ Haskell を勉強しようとすると必ず「モナド」ってのが出てきます。困ったものです。数学とか圏論とか関係があるらしくって、何が書いてあるんだか分からなくって嫌になってしまいます。でもね、Haskell って凄いらしいじゃないですか、格好良いらしいじゃないですか。ここはちょっとがんばって色々考えてみましょう。 そもそも Haskell って何なのよ?¶ 何なんでしょうね、Haskell って。コンピュータ言語らしいんです、あ、それは分かってると。良く挙げられる性質は次な感じ?: 関数型言語 強い型付け 遅延評価 参照透過 ここでちょっと型に関して見てみましょう。試しに Haskell の実装の 1 つである Hugs で 1 について考えてみます。Hugs では :type や :info というコマンドで hugs に型の情報などを質問することができます。例え

  • 継続モナドによるリソース管理 - Qiita

    継続モナドって何に使うんだ問題に対する一つの例。 リソース管理の問題 プログラミングをやっていると必ずまとわり付いてくるのがリソース管理の問題です。ここで指すリソースというのは、ファイルのハンドルだとか、ソケットだとか、排他処理のためのロックだとか、グラフィックのハンドルだとかそういう話で、GCのない言語だとメモリの管理もこれに含まれるでしょうか。 言うまでもなく、リソースを確保した後はしかるべきタイミングで確実に解放してやる必要があります。しかし往々にして、現実のプログラムではリソースの解放漏れが発生してしまいます。単に解放するコードを書き忘れると言うのが一番単純でしょうもない理由ですが、それでも、C言語のようにリソース解放のための特別な仕組みを持たない言語では、これを徹底するのも結構骨の折れることだったりします。それはともかく、もう少し高尚な悩みとしては、例外との組み合わせで発生する解

    継続モナドによるリソース管理 - Qiita
  • Haskellの壁 - think and error

    この記事はHaskell Advent Calendarのために書いたものです。 先ずは自己紹介でも。 大学の専門は機械でした。制御システム工学。まあ情報(工学|科学)科ではないということです。仕事で使っている言語はPHP。実用主義的な言語ですね。Haskellとは正反対です。 Haskellは私的に使うために習得しているところ。出来ればHaskellでプロトタイプ作成くらいはさくっと出来るようにはしたい。 ホーム言語というか得意な言語とかあるといいよなあー、とか思いつつ大学生協でRWHを立ち読みし、よしこれにしようと思い立ったのがHaskellはじめだったかな。 ポリシーが明快なものは良いですね。PerlとかRubyとかPythonとか結構好きです。PHPとか好きではない。最近はClojureなんかも結構いいなあ、などと思っていたり。 それはともかく、このHaskell習得時期にAdve

    Haskellの壁 - think and error
  • Chapters - Learn You a Haskell for Great Good!

    Introduction About this tutorial So what's Haskell? What you need to dive in Starting Out Ready, set, go! Baby's first functions An intro to lists Texas ranges I'm a list comprehension Tuples Types and Typeclasses Believe the type Type variables Typeclasses 101 Syntax in Functions Pattern matching Guards, guards! Where!? Let it be Case expressions Recursion Hello recursion! Maximum awesome A few m

  • Haskellのカレンダー | Advent Calendar 2014 - Qiita

    Haskell Advent Calendar 2014 今年もアドベントカレンダーの季節がやってきました。内容はHaskellに関係していれば何でもOKです。 どこに書けばいいの? Qiitaでも、自分のブログやgistなどで書いてリンクを貼ってもOKです。 過去のAdvent Calendar Haskell Advent Calendar 2013 Haskell Advent Calendar 2012 Haskell Advent Calendar 2011 Haskell Advent Calendar jp 2010

    Haskellのカレンダー | Advent Calendar 2014 - Qiita
  • 関数型プログラミングとオブジェクト指向の抜き差し可能な関係について整理して考える - モナドとわたしとコモナド

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

    関数型プログラミングとオブジェクト指向の抜き差し可能な関係について整理して考える - モナドとわたしとコモナド