タグ

haskellに関するmukakenのブックマーク (189)

  • Haskell: The Craft of Functional Programming (PDF)

    I’m happy to announce that the PDF of Haskell, The Craft of Functional Programming (3rd edition) is available to view and download for free. Later in the year I’ll revise it and make it available as an online text. But for now, here it is, uncorrected: https://simonjohnthompson.github.io/craft3e/craft3e.pdf

    Haskell: The Craft of Functional Programming (PDF)
    mukaken
    mukaken 2024/07/01
    “サイモン・トンプソン : Haskell、関数型プログラミングの技術(第 3 版)の PDF が無料で閲覧およびダウンロードできるようになりました。”
  • Inside the Cult of the Haskell Programmer

    A regular column about programming. Because if/when the machines take over, we should at least speak their language. Haskell. It sounded like a good name for a weapon—a well-sharpened blade, like scimitar or katana. The strong German-sounding plosive in its name, as in Nietzsche or Kafka, added a menacing edge. All I really knew about the language was that it was challenging and intended for math

    Inside the Cult of the Haskell Programmer
    mukaken
    mukaken 2024/05/14
    "Haskellプログラマー・カルトの内幕""この業界のあまり知られていない秘密は、ほとんどのプログラマーは皆さんが思っているほど数学や論理が得意ではない"
  • Haskellのカレンダー | Advent Calendar 2023 - Qiita

    今年の Advent Calendar も Haskell で盛り上がりましょう〜 内容は Haskellに関係していれば何でもOK! 記事はQiitaでもZennでも、自分のブログやgistなどに書いてリンクを貼ってもOKです。 Haskell-jp Blog への寄稿も大歓迎です!(寄稿方法はこちら) 去年の Advent Calendar edit_calendarHow to join the calendarYou can join the calendar by selecting an available date and registering the URL of the article you wish to link to. If a slot is available, you can go back to a past date to join!

    Haskellのカレンダー | Advent Calendar 2023 - Qiita
  • 『なっとく!関数型プログラミング』はScalaで説明されている本だけど読んだらHaskellのdoもわかるようになった - nakaoka3の技術ブログ

    関数型プログラミング言語については、以前にHaskellのを読んでみたりして、興味はあったのだが正直あまり理解できてなかった。 『なっとく!関数型プログラミング』はScalaのコードで関数型プログラミングを説明しているだ。最近邦訳が発売されて話題になっていたので買って読んでみた。 www.seshop.com こので入れ子のflatMap の説明から、Scalaの for 内包表記 を説明しているところを読んで、Haskell の do もこれかということに気がついた。 リストの場合 // 入れ子のflatMap val result = List(1, 2).flatMap { x => List(10, 20).flatMap { y => List(100, 200).map { z => x + y + z } } } // for内包表記 val result2 = for

    『なっとく!関数型プログラミング』はScalaで説明されている本だけど読んだらHaskellのdoもわかるようになった - nakaoka3の技術ブログ
  • 関数型言語とは何か?(Haskellで学ぶ)

    「関数型言語とは何か?」について解説します。「オブジェクト指向の複雑さを軽減する」として関数型言語は近年注目を集めています。しかし「関数を中心にプログラムを組み立てる」といっても、具体的なイメージができない方も多いのではないでしょうか。 書では「強い制約を課して、来すべきことに集中する」という視点から関数型言語の概要を紹介します。「変数の値を後から変更できない・副作用を禁止する」など、関数型プログラミングならではの特徴を学んでいきましょう。

    関数型言語とは何か?(Haskellで学ぶ)
    mukaken
    mukaken 2023/11/05
    "「強い制約を課して、本来すべきことに集中する」という視点から関数型言語の概要を紹介"
  • haskellとnixの話 - Qiita

    この記事は、Haskell Advent Calendar 2022の23日目の記事です。 だいぶ荒削りですので、間違いがあるかもしれません。 目的 OSSのプロジェクトで4年ほどNixを使い続けてきました。 NixのHaskellのサポートの現状のいいところと課題を整理するのが目的です。 なぜNixを使うのかを確認したあと、NixのHaskellサポートをみて課題をまとめます。 なぜNixか、なにがやりたいのか? Nixはパッケージマネージャーです。各種Linuxディストリビューション, MacOSに入れられるものです。 Nixに期待していることはなんでしょうか? それは再現性と効率性ではないかと思います。 まずは再現性についてです。nixosのポータルの一番はじめにでてくるように再現性がもっとも重要でしょう。 手元の開発環境やクラウドの開発環境、各種のメンバーで開発するソフトウェアのバ

    haskellとnixの話 - Qiita
  • 関数型プログラミング~Phantom type(幽霊型)ってなんだろう~ - Qiita

    Haskellのコードでしばしば見かける幽霊型について。 Phantom type(幽霊型)の特徴 左辺で定義した型変数が右辺に全く現れない型 具体的な値に興味はなく、型の情報さえあれば十分な時などに使われる 型の情報だけでやりたいことを実現するため、型レベルプログラミングの一種と捉えられる Pantaom type(幽霊型)の例 例として、次のようなものを考えます。 時刻の「分」と「時間」を区別できる型を作りたい ただし、「分」・「時間」を表す値の型は同一の型としたい 時刻に関する計算の処理も同一のものとしたい 時刻を保持する型を定義 まず、時刻を保持する型を定義します。 -- 型変数unitは右辺に現れないので幽霊型と呼ぶ newtype Time unit = Time Int deriving (Num, Show) ここで注目すべきは、型変数の'unit'が右辺で使用されていない

    関数型プログラミング~Phantom type(幽霊型)ってなんだろう~ - Qiita
    mukaken
    mukaken 2022/11/23
    “Haskellのコードでしばしば見かける幽霊型について。”
  • 【Haskell】カリー化と部分適用を図解しながら説明してみた 【JavaScriptも使いつつ】

    1. ラムダ式 (無名関数)1-1. ラムダ式とは?まずはラムダ式について説明します。 ラムダ式とは、無名関数(名前がない関数)を作るために用いられる記法です。 関数に名前をつけないで直接実行できるので、1回しか使わない関数にいちいち名前を付与せずに直接実行することができます。 記述のルールはこんな感じ。 \引数 -> 関数JavaScriptだと (引数) => { 関数体 } と表記されるやつですね。 ちなみに \引数 のように \ が入るのは λ を表現しているのだそうです。ややこしい気がする笑 説明だけだといまいちピンとこない方もいると思うので、例をみてみましょう。 引数を渡すと 1 を加算して返してくれる 関数を作りたいとします。 便宜上、 increment 関数とします。 ・increment 1 とすると 2 が返ってくる、 ・increment 3 とすると 4

    【Haskell】カリー化と部分適用を図解しながら説明してみた 【JavaScriptも使いつつ】
  • Amazon.co.jp: 算数を作って覚えるHaskell: しんちゃん: 本

    Amazon.co.jp: 算数を作って覚えるHaskell: しんちゃん: 本
  • Effective Haskell

    About This Title Pages: 668 Published: August 2023 ISBN: 9781680509342 In Print Effective Haskell Solving Real-World Problems with Strongly Typed Functional Programming by Rebecca Skinner Put the power of Haskell to work in your programs, learning from an engineer who uses Haskell daily to get practical work done efficiently. Leverage powerful features like Monad Transformers and Type Families to

    Effective Haskell
  • 執筆中:「Haskellでの型レベルプログラミング」 | 雑記帳

    最近、「Haskellでの型レベルプログラミング」という「」を執筆している。まだ完成ではないが、以下のリンクから読める: Haskellでの型レベルプログラミング なぜHaskellか 最近いろんな言語が出てきている中で、Haskellの強みとは何だろうか。人によって答えは色々あるだろうが、筆者にとってHaskellの魅力的な側面は強力な型システムである。どのくらい強力かというと、型レベルでプログラミングができ、依存型の模倣さえもできてしまう。 (依存型をやりたいなら最初から依存型のある言語を使えという意見は尤もだが、それはそれとして。) Haskellでの型レベルプログラミングの解説記事というのは、英語圏ではちらほら見かけるが、日語圏ではあまり見ない。2018年(原文は2017年)に公開された Haskellにおける型レベルプログラミングの基(翻訳) – Qiita が数少ない例で

  • Haskellと余代数(Coalgebra) - 朝日ネット 技術者ブログ

    ここではHaskellの中級者向けのトピックを簡単に取り上げたいと思います。 今回は余代数(Coalgebra)についてです。Haskellを書いていると『余(なんとか)』という言葉をみかけることがあります。これは英語の接頭辞 Co- の訳で、ここでは代数(Algebra)の双対(Dual)という意味で余代数と呼ばれています。 さてHaskellやOCamlのデータ型は一般に代数的データ型(Algebraic data type)と呼ばれます。このデータ型にパターンマッチングを加えて、(オブジェクト指向言語などと比較したときの)関数型言語の特徴と紹介されることも多いと思います。実はこのデータ型にはもともと余データ(Codata)と呼ばれるような相方がいたのですが、人類が扱うには早すぎたのか、データ型に比べると余データは長らく影の存在でありました(ちなみに余データは口語上はコデータと呼ぶかも

    Haskellと余代数(Coalgebra) - 朝日ネット 技術者ブログ
  • Haskellでの型レベルプログラミング

    Haskellでの型レベルプログラミングの解説書です。

    Haskellでの型レベルプログラミング
  • 関数型プログラミング言語における関数適用構文の歴史的経緯についてのメモ - Arantium Maestum

    先日こういうツイートがあった: Haskellとかの関数型言語を使用しているプログラマの皆様にお聞きしたいんですけど、「関数名 引数 引数 ...」みたいな関数呼び出し構文って見にくくは無いですか?「関数名(引数, 引数, ...)」に慣れたこちらからすると、丸括弧が無いからコード中のどこが関数呼び出しなのかパット見で把握しにくい。— sounisi5011/プログラム (@sounisi5011Prog) February 22, 2022 「見にくくは無いですか?」と聞かれると、個人的には「全然大丈夫です」と答えざるを得ないのだが、次のツイートに関しては考えさせられた: 数式でも函数には丸括弧を使ってるのに、どこのタイミングで丸括弧が消失したのかわからないし、その選択をした理由も思いつかない。— sounisi5011/プログラム (@sounisi5011Prog) February

    関数型プログラミング言語における関数適用構文の歴史的経緯についてのメモ - Arantium Maestum
    mukaken
    mukaken 2022/02/26
    “関数型言語の二大巨頭(異論は認める・・・)であるHaskellとML(OCaml・SML)のどちらでも「関数適用にカッコがいらない」という構文が採用された歴史的経緯”
  • Fix関数の教科書 (Haskell) - Qiita

    fix関数についての解説記事が少なかったので、頑張ってかき集めた情報をまとめておこうと思います。 内容としては、 fix関数 <- 今ココ MonadFixと再帰的do記法 ArrowLoopと再帰的arrow記法 を複数の記事に分けて紹介します。 fix関数なら大体知っているよっていう人は、説明を飛ばして、後ろの練習問題から始めても楽しいと思います。 fix関数の仕組みはいいから、使い方だけ教えて~~っていう人は、fix関数の活用法から始めると幸せかもしれません。 この記事に載せているソースコードは、モジュールのimport文を省いています。なので、実際に手元の環境で動かしてみるときは、次のimport文をソースコードの冒頭に追加して実行してください。 import Control.Monad.Fix -- fix関数をインポート import Control.Monad.State -

    Fix関数の教科書 (Haskell) - Qiita
  • 仕事で使うHaskell

    TL;DR Haskellはいいぞ。ただ仕事で使うならビルド、デプロイ周辺は工夫する必要が色々出てくるぞ。 あ、nixもいいぞ。 はじめに Haskellを用いている会社HERPに転職してからそろそろ1年が経つので久しぶりに記事でも書いてみます。そういえばzennでは初投稿ですね。 最近はHERPでHaskellを書きつつシステム基盤整備みたいなことをやっています。あとマネージメントみたいなこともやってたりします。 僕の書いたHaskell microserviceは既に稼働して売り上げに貢献しています。 あ、HERPはHaskell FoundationのFunctorスポンサーになっています。スポンサーの名前が面白いですよね。 Haskellを仕事で使う感想 最高ですね。簡単便利十分速い保守楽拡張楽、という感じです。 並行プログラミングツールとしてstmが提供されているのがお気に入りで

    仕事で使うHaskell
  • 世界のプログラミング言語(36) 純粋関数型言語Haskellは難しいが学ぶ価値がある言語

    Haskellは純粋関数型プログラミング言語です。連載では既にLispやOCamlなどの関数型言語を紹介しましたが、Haskellは関数型言語の中でも特に人気の高い言語です。Stack Overflowの人気言語調査でも2020年は15位、2021年は22位と人気言語がひしめくなか健闘しています。Haskellは難しい言語としても有名ですが、その作法を学ぶならプログラマーの基礎体力の向上に役立つことでしょう。今回はHaskellを試してみよう。 HaskellのWebサイト Haskellとは Haskellは関数型プログラミング言語の一つです。 純粋関数型言語に分類されます。金融やセキュリティ、科学解析、プログラミング言語の開発などの分野で使われています。総じて信頼性が求められる分野の開発で採用されています。そのため、十分実用的な言語と言えます。 しかし、Haskellには「遅延評価」

    世界のプログラミング言語(36) 純粋関数型言語Haskellは難しいが学ぶ価値がある言語
  • プログラング言語Idrisに入門させたい(v0.9)

    これは筆者(κeen)がIdris Advent Calendar 2020に投稿した内容を土台とし、一冊のになるように増補改訂を行なったものです。 書では依存型のあるHaskellことIdrisについて紹介します。Idrisは純粋関数型言語であり構文もHaskellに似ていますが、大きな特徴として依存型があることが挙げられます。依存型があるとリストの長さを指定したり整数同士の割り算でゼロ除算が起きないことを保証したり、究極的には数学の証明をしたりもできます。また、依存型以外にもインタラクティブな開発環境を使った型駆動開発であったりElaborator Reflactionによるメタプログラミングだったりと注目に値する言語機能も揃っています。 総じてIdrisは非常に尖った言語です。作者がプログラミング言語理論の研究者ということもあり、かなり攻めた言語機能が入っています。依存型を搭載し

    プログラング言語Idrisに入門させたい(v0.9)
    mukaken
    mukaken 2021/05/08
    “依存型のあるHaskellことIdrisについて紹介します。Idrisは純粋関数型言語であり構文もHaskellに似ていますが、大きな特徴として依存型がある”
  • とほほのHaskell入門 - とほほのWWW入門

    「ハスケル」と呼びます。 数学者・論理学者の Haskell Curry の名前に由来しています。 LISP, ML などの言語の影響を受けています。 関数型プログラミング言語 であり、特に 純粋関数型言語 に分類されます。 金融、セキュリティ数学・科学解析、構文解析などの分野での利用例があります。 関数型プログラミングに慣れていない人にとっては、多少学習コストが高いようです。 遅延評価 を採用しており、式は記述されていても必要となるまで評価されません。 関数型言語ですが、モナド などを利用することにより、手続き型言語のような記述も可能です。 Haskell 1.0 (1990年)、Haskell 98 (1999年)、Haskell 2010 (2009年) などのバージョンがあります。 コンパイル型言語ですが、スクリプト言語の様にインタプリタで呼び出すこともできます。 処理系は、イン

    mukaken
    mukaken 2021/01/02
    とほほリリーズにHaskell入門が登場!
  • Amazon.co.jp: 圏論入門 Haskellで計算する具体例から: 雪田修一: 本

    Amazon.co.jp: 圏論入門 Haskellで計算する具体例から: 雪田修一: 本