タグ

関連タグで絞り込む (179)

タグの絞り込みを解除

Haskellに関するpoginのブックマーク (183)

  • 絶対に理解出来ないモナドチュートリアル - konn-san.com

    世の中には、恐しい数のモナドチュートリアルがあって、それぞれモナドは象だとか、いや接ぎ木だ とか、プログラマブル・コンテナだとか、プログラム可能なセミコロンだとか、色々な説明がなされている。「モナド チュートリアル」で検索すれば、他にも色々に絵解きされた有象無象のモナドが大量に引っ掛かる。そうそう、モナドは単なる自己関手の圏におけるモノイド対象だよ。何か問題でも?なんてのもあったな。 この記事の目的は別に、こうした既存のモナドチュートリアルを「間違ってる!」とか「わかるわけねーよ!」といって貶そうという訳ではない。実際、既に幾多書かれているチュートリアルの中でも、僕の云いたいことと殆んど同じようなことが書かれているものは沢山ある。 では、上の膨大なリストの末尾にまた一つ「わかりやすい比喩」を付け足そうというのか?というとそういう訳でもない。そうそう、モナドは比喩ではないというチュートリアル

  • プログラマであるあなたが圏論を学んで得られる事、得られない事 - Creatable a => a -> IO b

    「Haskellと数学とちょびっと音楽」なんていうシャレオツなサブタイをブログに付けてるのは誰ですか? 俺だよー! 大体、Haskell関連のコミュニティに顔を出していると、 数学科出ましたーとか、物理専攻ですー、とか、そーいう人がわりと多いのですが、 僕は「勉強なんて出来ないんジャー・レッド」だったので、サブタイトルに「数学」なんて入れつつも、 数学の話はほとんど出来なかったりとか出来たりとか・・・結局Haskellの記事しか書いてないですね、はい。 ただ、どちらかというと、Haskellでも処理系どうのとか、パフォーマンス云々とか、 そういう話より型システムでどうやって抽象化するかーみたいな、そういう話のほうがおもしれーとか思ったりしたので、 気づいたら圏論なんかはガジガジしてまして、多少の自己流の知識があったりとかなかったりとかしてるのです。 純粋関数型やらHaskellやらがメジャ

    プログラマであるあなたが圏論を学んで得られる事、得られない事 - Creatable a => a -> IO b
  • Haskellの代数的構造入門 半群・モノイド・環とは何か? - ログミーTech

    2018年11月10日、Haskell-jpが主催するイベント「Haskell Day 2018」が開催されました。純粋関数型プログラミング言語Haskellをテーマに、Haskellに興味のある人から入門者、ちょっとできる人まで、様々な層に向けたプレゼンテーションを行ったイベント。実務から研究まで、幅広いHaskellの事例を共有します。プレゼンテーション「Semigroupとは? Monoid? 環?」に登壇したのは、aiya000氏。講演資料はこちら Semigroupとは? Monoid? 環? aiya000氏(以下、aiya000):あいやと申します。今日は「Semigroupとは? Monoid? 環?」というテーマで代数についての発表をします。よろしくお願いします。 (会場拍手) 推しVimNeovimです。活動はTwitterGitHubなどをやっています。このスラ

    Haskellの代数的構造入門 半群・モノイド・環とは何か? - ログミーTech
  • モナドオリンピック1-トラック競技-

    はじめに 最速のモナドを決めるモナドオリンピックを開催することになりました。 この大会では、各ライブラリの提供するモナドたちが 様々な競技(ベンチマーク)に挑戦します。 競技説明 今回は副作用のないシンプルなベンチマークで計算速度を測ります。 ベンチマーク おなじみのfibをつかいます。普通のfibは返り値が整数型ですが、次の理由から偶奇を表すブール値にしています。 Int型にするとReaderモナドやIdentityモナドで返り値がUnboxingされて有利になりすぎる。 Integer型にすると演算にかかる時間が無視できない xor :: Bool -> Bool -> Bool xor True x = not x xor False x = x fib :: Monad m => Int -> m Bool fib = go where go n | n <= 1 = pure $

    モナドオリンピック1-トラック競技-
  • ユースケース層が投げうるエラーの型を「量化した open union」にしておけば複数のユースケースを合成したときに上の層でエラーハンドリングが楽にできて最高です! - ryota-ka's blog

    この記事は以下のページに移転しました. blog.ryota-ka.me この記事は Haskell Advent Calendar 2020 20日目の記事です. TL; DR タイトル 問題設定 ユースケース層とサーバ層が存在する Web アプリケーションを考える.サーバ層はユースケース層を呼び出すことができるが,ユースケース層はサーバ層について無知でなければならない. +----------------+ | server layer | +-------+--------+ | depends on +-------v--------+ | use case layer | +----------------+ このようなアプリケーションのAPI リクエストハンドラにおいて,複数のユースケースを合成して呼び出すケースを例に挙げ,それぞれのユースケースが投げうるエラーをうまく扱う o

    ユースケース層が投げうるエラーの型を「量化した open union」にしておけば複数のユースケースを合成したときに上の層でエラーハンドリングが楽にできて最高です! - ryota-ka's blog
  • Scala3と圏論とプログラミング - Qiita

    最近、圏論とプログラミングという素晴らしい資料を拝読しました。圏論とプログラミング愛に溢れる資料で読んでいて目頭が熱くなりました。そうだよな・・・プログラマにも圏論いるよな・・・ ただ、自分にとって残念だったのは、資料で説明用に選択されたプログラミング言語が「Haskell」だったことです。もちろんHaskellは素晴らしい言語です。ただ、自分にとってHaskellは外国語なのでちょっと理解が難しいのです。なのでこの資料が「Scala」で書かれていたらと夢想せずにはいられなかったのです。 Scalaと言えば昨年末にScala3のリサーチコンパイラのDottyがFeature Completeを宣言しました1。この宣言で新機能の追加は終了して、あとは2020年末のリリースに向けてひたすら品質を上げていく段階に突入しました。つまり、ようやく次世代のScalaが全貌を現したということです。 ここ

    Scala3と圏論とプログラミング - Qiita
  • SATySFiでad hoc多相 - Qiita

    SATySFiは現代的な設計に基づく組版処理システムです. 組版を行うバックエンドへ指示が関数型プログラミングで行えることが最大の特徴です. 言語としてはOCamlやSMLに近い構文を持ち,少しでもML系の言語とかHaskellに触ったことがある人なら特に苦労することなく高度な組版処理をプログラムすることができると思います. 実際私は技術書典の記事をSATySFiで記述していますがレイアウトに不満がある時などにささっと自分の手で変更できる(すくなくともそれに抵抗をあまり感じない)のは大きな魅力だと思います.(LaTeXを使う時はひたすらStack Exchangeで自分と同じようなハマり方をしてる人を探すガチャをしています.虚無.) ただし,あくまで組版処理がメインのため,プログラミング言語単体で見るとまだまだ不便なところもあります.たとえばSATySFiにはMLライクなモジュールシステム

    SATySFiでad hoc多相 - Qiita
  • AST を拡張しよう

    はじめに 実験的な内容です。(@fumievalさん, @matsubara0507さん、アドバイスありがとうございました) モチベーション まずは、以下のような型 Expr と関数 pretty が定義されているとします。 data Expr = Constant Int | Add Expr Expr deriving (Eq, Show) pretty :: Expr -> String pretty (Constant i) = show i pretty (Add e1 e2) = pretty e1 <> " + " <> pretty e2

  • Haskell社内勉強会とHaskell学習ツールの紹介 | IIJ Engineers Blog

    Haskellユーザーグループ(愛称 Haskell-jp)発起人の一人にして、Haskell-jpで一番のおしゃべり。 HaskellとWebAssemblyプリキュアとポムポムプリンをこよなく愛する。 こんにちは。IIJ-IIの山悠滋です。 今日はここ数ヶ月私と有志で行っている、Haskellの社内勉強会と、そこで使用している自作のHaskell入門ツールについて紹介します。 Haskellの社内勉強会について 「社内勉強会 失敗しながら学ぶHaskell入門タイム」と称して、私はこれまでに8ヶ月近くもの間、週1回Haskellの勉強会を開催してきました。 この手の勉強会は連続して参加することが前提となっているため、どうしても最初の回から少しずつ人数が減っていくという残念なことになりがちですが、どうにか私含め4~5人程度を維持してここまで30回、18個目の課題まで進めることが出

    Haskell社内勉強会とHaskell学習ツールの紹介 | IIJ Engineers Blog
  • Haskellの設定ファイル言語「Dhall」の基本と、KubernetesのYAMLを管理する方法

    2018年11月10日、Haskell-jpが主催するイベント「Haskell Day 2018」が開催されました。純粋関数型プログラミング言語Haskellをテーマに、Haskellに興味のある人から入門者、ちょっとできる人まで、様々な層に向けたプレゼンテーションを行ったイベント。実務から研究まで、幅広いHaskellの事例を共有します。プレゼンテーション「Dhall: Haskellの新たなキラーアプリ」に登壇したのは、syocy氏。講演資料はこちら Dhall: Haskellの新たなキラーアプリ syocy氏(以下、syocy):では続けて、「Dhall: Haskellの新たなキラーアプリ」という発表をさせていただきます。 繰り返しになりますが、このスライドおよびソースコードはGitHubで管理しています。PDFGitHub Releasesのほうに上がってます。スライド中の

    Haskellの設定ファイル言語「Dhall」の基本と、KubernetesのYAMLを管理する方法
  • コモナドを攻略する - bitterharvest’s diary

    2.コモナド 今回の記事はコモナド(余モンドとも言われる)だ。モナドはあちらこちらで出会うことが多いが、コモナドについての説明はそれほど多くない。今回の記事でも示すが、実はコモナドの概念はとても面白く、現実の世界の中でこれはコモナドではと思うことが多々ある。同窓会などで、久しぶりにかつてのクラスメイトに会って、昔話に話を咲かせているときに、思い出が違っていることにビックリすることが往々にしてある。事実は変わらないはずなのだが、年月がたつにつれてそれぞれの記憶が変容し、異なってしまったのだろう。これなどコモナドのよい例だと思うのだが、正しいかどうかは記事を読んでから確認して欲しい。 2.1 コモナドの定義 コモナドとモナドは双対概念だ。コモナドは、モナドを定義したときの射の矢印の方向を反対にするだけなのだが、その概念から受け取る感覚は、随分と異なるものになる。圏論でのモナドは哲学からの借用語

    コモナドを攻略する - bitterharvest’s diary
  • GitHub - haskell-fswatch/hfsnotify: Unified Haskell interface for basic file system notifications

    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.

    GitHub - haskell-fswatch/hfsnotify: Unified Haskell interface for basic file system notifications
  • HIW 2018・Haskell Symposium 2018に行ってきた | IIJ Engineers Blog

    Haskellユーザーグループ(愛称 Haskell-jp)発起人の一人にして、Haskell-jpで一番のおしゃべり。 HaskellとWebAssemblyプリキュアとポムポムプリンをこよなく愛する。 HIW 2018・Haskell Symposium 2018 とは HIW 2018 (Haskell Implementors’ Workshop 2018)とHaskell Symposium 2018は、ICFP (International Conference on Functional Programming)という関数型プログラミングについての国際会議に併設された、Haskell専門のワークショップと国際会議です。 Haskell Symposiumは投稿されたHaskell全般についての論文の発表会です。 一方HIWは、名前通りのHaskellの実装(主にGHC)

    HIW 2018・Haskell Symposium 2018に行ってきた | IIJ Engineers Blog
  • Inside the paper: Build Systems a la Carte

    Summary: How we went about writing a build systems comparison paper, how we learnt what we learnt, and why the end result surprised us. A glimpse inside writing a paper. The final version of the Build Systems a la Carte paper has just been sent to ICFP 2018 - see an overview from one of my co-authors. The paper is a collaboration between Andrey Mokhov at Newcastle University, Simon Peyton Jones at

  • LiquidHaskell コトハジメ - チェシャ猫の消滅定理

    このエントリは Haskell Advent Calendar 2016 および Formal Method Advent Calendar 2016 の 23 日目の投稿です。のはずでしたがすでに日付が変わりました。謹んでお詫び申し上げます。 ちなみに 22 日目の担当者はそれぞれ Haskell Advent Calendar 2016 : heredocsの紹介 - Qiita Formal Method Advent Calendar 2016 : 農夫 山羊 キャベツ 狼 - Qiita です。偶然ですが同じ方が執筆担当ですね。 さて、エントリでは Haskell の型の表現力をより豊かにする仕組み、 LiquidHaskell について概要を紹介します。使用するサンプルコードは Samples of Verification by LiquidHaskell · GitHub

    LiquidHaskell コトハジメ - チェシャ猫の消滅定理
  • GitHub - cute-jumper/parsec.el: A parser combinator library for Emacs Lisp, similar to Haskell's Parsec library.

    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 - cute-jumper/parsec.el: A parser combinator library for Emacs Lisp, similar to Haskell's Parsec library.
  • Scalaで型クラス入門 - still deeper

    型クラスについてつらつら考えていたことをまとめておきます。マサカリ歓迎。 型クラスって? 型クラスとは一言でいうと。 アドホック多相 を実現するもの です。モから始まる名状し難いあれとは直接は関係ありません。 ではアドホック多相とは何かというと 異なる型の間で共通したインターフェースでの異なる振る舞いを 定義済みの型に対して拡張する ような多相のことです。 異なる型間での共通したインターフェースでの異なる振る舞い Javaの継承やインターフェース、Scalaのtraitを用いることで、異なる型間での共通したインターフェースを管理することができます。 trait SomeTrait { def someMethod(): String } class Foo extends SomeTrait { def someMethod(): String = "foo" } class Bar ex

  • GHC言語拡張の一覧 - Qiita

    Haskellのデファクトスタンダードな処理系であるGHCには,Haskellの言語仕様を補うような形で,GHC拡張と呼ばれる言語拡張を用意している.これらはちょっとした便利な糖衣構文を用意するようなものから型システムに深刻な影響を及ぼすもの,次期仕様策定までの前準備のものまで様々ある.いくつかの拡張はデフォルトで有効になっている. 言語拡張は,次の3つの方法で制御できる. すべての言語オプションは,コマンドラインフラグ-X ...(たとえば,-XTemplateHaskell)でオンになり、フラグ -XNo ...でオフになる.(たとえば,-XNoTemplateHaskell) GHCによって認識されている言語オプションは,LANGUAGEプラグマ(たとえば,{-# LANGUAGE TemplateHaskell #-})を使用して有効にすることもできる. stack (hpack)

    GHC言語拡張の一覧 - Qiita
  • Haskell の代数的データ型を比較、特定の基準でソート – compare, sortBy

    Ruby であるクラスのオブジェクトを比較可能にするには、クラスに Comparable モジュールをインクルードする。Python なら __cmp__ メソッドをクラスに実装。 同じように Haskell でも代数的データ型を比較できるようにするには、Ord クラスのインスタンスにする。 比較できるように 代数的データ型の定義 例えば、「人」が「名前」「年齢」を持つことを代数的データ型で表現すると、 data Person = Person { name :: String , age :: Int } deriving Show Ord クラスのインスタンスにする Data.Ord によると、 Minimal complete definition: either compare or <=. Using compare can be more efficient for compl

    pogin
    pogin 2018/03/16
    Haskellでソート
  • ClojureとHaskellで簡単なコマンドラインツール(RESTクライアント)を作ってみた - Qiita

    昨年末のAdvent Calendarで2回に分けて紹介したsituated-program-challengeのClojure/Duct版実装とHaskell/Yesod版実装ですが、そこではもともとの課題のうちRESTサーバしか実現できていなかったため、今回新たにRESTクライアント実装についてご紹介します。 Clojure/Duct版RESTサーバ: lagenorhynque/situated-program-challenge/rest-server at clj-version1 ClojureのDuctでWeb API開発してみた - Qiita Haskell/Yesod版RESTサーバ: lagenorhynque/situated-program-challenge/rest-server at hs-version1 ClojurianがHaskellでWeb API

    ClojureとHaskellで簡単なコマンドラインツール(RESTクライアント)を作ってみた - Qiita