タグ

Haskellに関するn314のブックマーク (62)

  • Web APIを手作りする時代は終わった?

    ::: message info これは[フィヨルドブートキャンプ Advent Calendar 2022 Part.1](https://adventar.org/calendars/7760)の25日目の記事です。 昨日の記事は:@shujiwatanabe:shujiwatanabeさんの[質問しながら出来るようにしていく](https://shu91327.hatenablog.com/entry/2022/12/24/091025)と:@saeyama:saeyamaさんの[Rails/Vue 編集時に画像をD&Dで入れ替えした時のActive Storageの保存方法](https://saeyama.hatenablog.com/entry/2022/12/24/000123)でした。 ::: ↓こういうのを職人が丹精込めて一つ一つ手作りする時代は終わりました。 ```sh

    Web APIを手作りする時代は終わった?
    n314
    n314 2022/12/26
    使わないだろうけど面白そう。と思ってソース見に行ったら、一番面白そうなポイントはHaskellで書かれていることだった。
  • 執筆中:「Haskellでの型レベルプログラミング」 | 雑記帳

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

    n314
    n314 2022/03/31
    やりたいと思いつつやってない
  • 「Haskellのモナド完全に理解した」試験問題

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

    「Haskellのモナド完全に理解した」試験問題
    n314
    n314 2021/06/14
    何年もやってないけど結構覚えてた。
  • 圏論入門|日本評論社

    第1章 圏・関手・自然変換 1.1 集合と写像から 1.2 圏・対象・射 1.3 圏のデータ構造 1.4 関手・反変関手 1.5 忠実関手と充満関手 1.6 自然変換 1.7 Haskの部分圏 第2章 自然変換と圏同値 2.1 関手圏 2.2 圏同値 第3章 普遍性と極限 3.1 始対象と終対象 3.2 積 3.3 余積 3.4 極限 3.5 余極限 3.6 極限の存在 3.7 余極限の存在 第4章 関手と極限の交換 4.1 関手は錐や余錐を写す 4.2 Hom関手と極限 4.3 Hom関手と余極限 4.4 実行可能な例 4.5 極限を関手とみる 第5章 随伴 5.1 随伴とは 5.2 単位と余単位 5.3 三角等式 5.4 普遍射と随伴 5.5 随伴の同値な言い替え 5.6 随伴と圏同値 5.7 随伴の大局的な自然性 5.8 随伴と極限 第6章 モナドとHaskellのMonad 6.1

    圏論入門|日本評論社
    n314
    n314 2020/08/14
    気になる。どこかに紹介のブログがあるのかな?
  • 圏論入門前の準備運動―集合と写像― - Qiita

    想定読者と到達目標 Haskell 覚えつつ圏論も一緒に勉強しよう と思っていたけど結局は圏論に手も足も出ず、 Haskell はある程度できるようになった人へ1。 圏論とは何なのかを断片的にでも理解して、 自分が何をやってるのかを多少は把握しながら 圏論に入門できるようにするための準備運動。 目次 圏論入門前の準備運動―集合と写像― 写像とモノイドの概念を受け入れる 圏論が集合論の一般化であることを理解した気になる もう諦めない圏論入門―対象と射― もう諦めない圏論入門―圏と関手― もう諦めない圏論入門―関手と自然変換― もう諦めない圏論付録―ストリング・ダイアグラム― もう諦めない圏論基礎―極限からカン拡張へ― もう諦めない圏論基礎―モノイドからモナドへ― もう諦めない圏論基礎―高次元圏と変換手― 集合や写像とは何なのか、詳細に関しては 検索すれば幾らでも出てくるので省略する。 ここで

    圏論入門前の準備運動―集合と写像― - Qiita
  • 圏論のモナドとHaskellのモナド

    Symbolic Computations in Conformal Geometric Algebra for Three Dimensional O...Yoshihiro Mizoguchi

    圏論のモナドとHaskellのモナド
    n314
    n314 2020/05/30
  • 「圏論とプログラミング」発表スライドメモ - Qiita

    この記事は、先日の 2020年01月25日に慶応大学で開催されたシンポジウム「圏論的世界像からはじまる複合知の展望」の登壇資料を文字起こししたものです。 Slide: 圏論とプログラミング / Category Theory and Programming - Speaker Deck Video: 圏論とプログラミング / 稲見泰宏 - YouTube 皆さん、こんにちは。稲見 泰宏と申します。 日は、この圏論シンポジウムという貴重な場でお話しさせていただくことをとても光栄に思います。 私の方からは、圏論とプログラミングに絡めた話について発表します。 それでは、どうぞよろしくお願いします。 まず簡単に自己紹介します。稲見泰宏といいます。 現在は、フリーランスのiOSアプリ開発者として活動しております。 ここに書いてあるのは、私の過去10年間のプログラミング経歴ですが、 PHPJava

    「圏論とプログラミング」発表スライドメモ - Qiita
    n314
    n314 2020/01/30
    あとで読む…?
  • Haskell書いてるときになんとなく気をつけていること - LugendrePublic

    信頼性はない 都市伝説かもしれん 大体枕詞に特別な理由がなければがつく 思いついたら徐々に更新する それは違うよってことがあったら @Lugendre まで ghc 8.6.5の話(8.8.1は仕事で使ってなくてな......) コンパイル通るかの確認だけなら最適化オプションO0でコンパイルする stackでいうとstack build --fast 動かすときはO2ビルドしたほうがいいが,インライン展開に5億年消費する なんならこのくらいは静的解析に任せてもいいが,でかいプロジェクトだと一定時間動いてハングアップするのしか世の中にないのでオワリ VSCode のせい説もある ghcideに期待 CIするときは必ずキャッシュする 毎回一から依存関係やGHCのビルドが走って余裕で1時間超えるようになるので データ構造のフィールドは特に理由がない限り正格にする 意図しないサンクを潰すため 単相

    Haskell書いてるときになんとなく気をつけていること - LugendrePublic
    n314
    n314 2020/01/19
  • Haskell〇〇多すぎ問題 - LugendrePublic

    初心者が入門書を読んでさぁ書くぞとなったときにつまずくところのうちの一つが,同じようなライブラリが多すぎ問題である. ということでそういうライブラリの話をしよう. 例によって例のごとく間違っていること書いてあるかもなので報告よろしく. モナド変換子 Haskellで実用的なプログラムを書く上で避けて通れないものの一つにモナド変換子がある.こいつはなにかというと,簡単に言えば,モナドを合成してでかいモナドを作るやつである.人間がおおよそ使うであろうモナド変換子はライブラリで提供しているので,それらを組み合わせてお望みのモナドを作ろうとするわけだが,そこに立ちはだかるのがtransformersとmtlである. transformersとmtl transformersはlift という下位のモナドのアクションをでかいモナドのアクションに持ち上げてくれるメソッドが定義されたMonadTrans

    Haskell〇〇多すぎ問題 - LugendrePublic
    n314
    n314 2019/12/25
  • 100行のHaskellでスネークゲームを作った - Qiita

    200行のVue.jsでスネークゲームを作ったという面白い記事を見つけて自分のスネークゲーム魂に火がついたので書いてみました。別に短い行数で書けたぞとか言う話ではなく、純粋に僕はスネークゲームを昔からよく作っていたのですが12 シンプルに 分かりやすく を目指して作ったことがないことに気づいたので作ってみることにしました。プログラム自体は2時間ぐらいで完成しました。 今回使うHackageはglossとmwc-randomのみです。 {-# LANGUAGE RecordWildCards #-} import Data.Function (fix) import Graphics.Gloss.Interface.IO.Game import System.Random.MWC wWidth, wHeight :: Num a => a wWidth = 640 wHeight = 480

    100行のHaskellでスネークゲームを作った - Qiita
    n314
    n314 2019/10/07
    これは良いサンプル
  • IO (Maybe String)を触ってみる - Qiita

    LT駆動の発表内容の下書きです。 下書きといっても十分にかいているつもりである。(読みやすくとはいっていない) そのときのスライド IO (Maybe String)はモナドが入れ子になっている。IOなんかついてるととても扱いづらい。実際に体験してみたりしてみる。 IO Stringは 実行するたびに文字列が返ってくる。返ってくる文字列の内容は実行するたびに変わるかもしれない。 Maybe Stringは 評価すると文字列もしくは空っぽかもしれない値が返ってくる。評価するたびに結果は変わらない。 IO (Maybe String)は、実行するたびに文字列もしくは空っぽの値が返ってくる。値は実行するたびに変わるかもしれない。 IO Maybe Stringではない。 (IO Maybe) Stringと解釈されるため。これは型として不正。 IOは一つの型しか受け取らないが2つの型を受け取ろう

    IO (Maybe String)を触ってみる - Qiita
    n314
    n314 2019/06/18
    この最後の表、よく忘れる
  • Haskellで関数のオーバーロード - Qiita

    Haskellの実験メモです。 HaskellでC++Javaなどでできる関数のオーバーロードのようなことをやってみました。型クラスについての簡単な説明も含みます。 新しい言語を使うときはまさに手探りで、試行錯誤の過程についても記載しています。パターンマッチによる関数の分割定義を見たとき、関数のオーバーロードに似ていると感じたことが発端となっています。 C++ C++では同じ名前で引数の型が異なる関数を複数定義することができます。(関数のオーバーロード) #include <iostream> #include <string> using namespace std; string foo(int i) { if (i == 1) return "bar"; return "?"; } string foo(const string &s) { if (s == "1") return

    Haskellで関数のオーバーロード - Qiita
    n314
    n314 2019/06/18
    検索したらIncoherentInstancesの危険度:鬼って出てきた
  • 圏論に最短で入門する - 俺の Colimit を越えてゆけ

    はじめに 対象読者 数学以前 数学の基礎 ホモロジー代数 圏論 もっと手取り早く圏論の勉強を始めたい人へ おわりに 紹介した書籍 はじめに 私が圏論という分野を知るきっかけは、おそらくこの文章を読んでいるほとんどの人と同様に Haskell の勉強をしたことがきっかけでした。 Haskell のモナドなどを利用する上では圏論を理解する必要は全くないのですが、型システムや処理系に関して詳しく知りたくて論文を読むと圏論の言葉が普通に使われていて、理解できずに断念していました。 そこで、当時数人が集まってやっていた圏論勉強会に参加して圏論の勉強を始めました。当時読んでいた書籍は Conceptual Mathematics: A First Introduction to Categories でした。このは圏論の初学者向けに書かれたで、数学的な知識をほとんど仮定せずに理解できるように書かれ

    圏論に最短で入門する - 俺の Colimit を越えてゆけ
  • 【翻訳】PureScriptとHaskellの違い +α - Qiita

    PureScriptの公式ドキュメントより、『Haskellとの違い』のざっくり翻訳+αです。原文のライセンスはCreative Commons Legal Code Attribution-NonCommercial-ShareAlike 3.0 Unported です。 (翻訳ここから) 評価戦略 Haskellとは異なり、PureScriptは正格評価です。 JavaScriptの評価戦略と一致するので、既存のコードとの相互運用はとても簡単です。PureScriptモジュールからエクスポートされた関数は、「通常の」JavaScript関数とまったく同じように振る舞いますし、それに対応して、FFIを通じてのJavaScriptの呼び出しもシンプルになっています。 正格評価を維持するということは、実行時システムや非常に複雑なJavaScript出力も必要ないということを意味します。やむを

    【翻訳】PureScriptとHaskellの違い +α - Qiita
  • GHCJS build worked only once and then stack simply stopped doing anything in consecutive builds · Issue #3665 · commercialhaskell/stack

    n314
    n314 2019/06/03
  • How to uninstall a Haskell package installed with stack?

    n314
    n314 2019/05/31
  • <Haskell> Emacs での開発環境構築メモ - 日記(日記とは言っていない)

    Emacs での Haskell の開発環境構築メモ. 以前書いていたものをこちらへ移しただけなので,現在は多少事情が異なっていたり,そもそも Emacs じゃなくて VSCode とかの方がよかったりするかもしれません. 私の設定はこちら. Intero for Emacs Flycheck や補完や REPL 等,最低限必要な機能がこれ一つで一通り揃います.Stack との相性も良く,使い勝手も良いです.詳しくは 公式 を参照. Installing 公式 に従います. MELPA を登録していない場合は,パッケージアーカイブスのリストに追加すしておきます. 例えば,init.el 等に次のように記述します. ※ 私の設定はこんな感じ. (require 'package) (add-to-list 'package-archives '("melpa" . "http://melpa

    <Haskell> Emacs での開発環境構築メモ - 日記(日記とは言っていない)
    n314
    n314 2019/05/30
  • HaskellからCライブラリを呼ぶ(FFI) - yunomuのブログ

    Haskellのなんでもアリ具合。 ライブラリをビルドしてるとちょいちょい見えるFFIという文字列、気になって調べてみると、ForeignFunctionInterfaceというものがあって、これはHaskellからCの関数を呼び出すためのモジュールというか拡張らしい。 Haskellのものすごいライブラリの充実度の影にはこういうものがあったりするんですね。 ということでちょっと遊んでみました。 だいたいこの記事のトレスです。 物のプログラマはHaskellを使う - 第22回 FFIを使って他の言語の関数を呼び出す:ITpro 既存のライブラリを呼ぶ 上の記事に習って、libmのsinを呼び出してみます。 まず、何はなくともmanです。sin(3)のmanを見ると、 NAME sin, sinf, sinl - sine function SYNOPSIS #include doubl

    HaskellからCライブラリを呼ぶ(FFI) - yunomuのブログ
    n314
    n314 2019/05/17
    IO付けても付けなくても良いっていうので微妙にハマってた。構造体の操作は今でもhsc2hsで良いんだろうか。
  • Haskell/Servantで行う安全かつ高速なAPI開発 - Speaker Deck

    Haskellを業務に導入し、ガッツリ使っている経験をもとに、技術スタックや開発スタイルを共有しつつ、Haskellのメリットや「何ができるのか?」を話します。 また、ライブラリの充実度も共有します。 お問い合わせはこちらのtwitterアカウントへ: @nakaji_dayo

    Haskell/Servantで行う安全かつ高速なAPI開発 - Speaker Deck
    n314
    n314 2018/11/10
    dbの制約から型の制約を生成できたらすごい安心感なんだよなあ…。
  • オブジェクト指向関連の不満な点 - モナドとわたしとコモナド

    また遅れてしまった…オブジェクト指向 Advent Calendar11日目。 最近いろいろオブジェクト指向について調べていて、やっぱりこの概念はいかがなものか、と思ったことを軽く書く。 継承 まずこれ。オブジェクト指向において「AがBを継承している」というのは、外延的には「任意のBのメソッドはAのメソッドである」であり、実装としては「AはBが持つ内部状態やメソッドの実装を利用できる」ことが多い。しかし、Twitterにも似たようなことを書いたが、「車クラスが乗り物クラスを継承している」みたいなゆるふわな使い方が目立つ。クラス、インターフェイスの用語と、それらの継承の定義ははっきりさせたい。則のない関係に意味なし。 抽象クラス、抽象メソッド 実装のない「抽象メソッド」と実装のあるメソッドをごちゃ混ぜにできるような仕様は害があると考えている。インターフェイスがあるにもかかわらずこのような中途

    オブジェクト指向関連の不満な点 - モナドとわたしとコモナド
    n314
    n314 2018/02/12
    だいたい同意