並び順

ブックマーク数

期間指定

  • から
  • まで

241 - 280 件 / 700件

新着順 人気順

haskellの検索結果241 - 280 件 / 700件

  • Haskell+LLVM構成で作る自作コンパイラ - Qiita

    Haskellのパーサコンビネータmegaparsecと、コンパイラ基盤であるLLVMを使って、コンパイラを作ってみます。モチベーションとしてはコンパイラはC/C++を使って作るのが定番ですが、型の恩恵を受けながら開発したいなあということでHaskellでも作れないか調べてみました。 コンパイラ作成の流れ パーサコンビネータのMegaparsecで四則演算のパーサを作成します。 LLVM IR構築のライブラリであるllvm-hs-pureでLLVM IRのコードへ変換するコンパイラを作成します。 簡単な式をコンパイルしてLLVMのインタープリタlliで実行します。 LLVMのコンパイラllcでアセンブラを生成してgccでバイナリまで生成します。 環境 あらかじめ以下をインストールしておいてください。 stack 1.9.3 Haskell 8.6.5 LLVM 9.0.0 コマンドラインで

      Haskell+LLVM構成で作る自作コンパイラ - Qiita
    • Higher-Kinded Data (HKD) について - Qiita

      これは Haskell Advent Calendar 12 日目の記事です。今日は 12/12+12 日です。 今回は、最近流行りの Higher-Kinded Data (HKD) について簡単に紹介したいと思います。 // 以前、某社の採用ビアバッシュ的イベントで、Haskell ほとんど知らない人の中で HKD の話をした際のスライドを公開し忘れていたので、せっかくなので多少手直しして公開します。 Haskell Day 2019 でも、@fumieval さんによる HKD のトークがあったので、そちらも参考にすると良いと思います。 https://twitter.com/fumieval/status/1193016480574500865 設定はモノイド Haskell 界隈には設定はモノイドであるべきという一派があります。 次のようなプログラムの設定を表すデータ型を例にして

        Higher-Kinded Data (HKD) について - Qiita
      • Nix で Haskell IDE Engine をシュッと入れる - ryota-ka's blog

        この記事は以下のページに移転しました. blog.ryota-ka.me みなさん,Haskell やってますか?普通に Haskell IDE Engine を入れようとするとビルドにメッチャ時間がかかって「地獄か?」という感じがするので,Nix でシュッと入れていきましょう. Nix のインストール Nix を入れていない人はいないと思うけど,念の為インストール手順です. 「Nixはこの会社以外で役に立つことはないけど、人生が豊かになるから勉強した方がいい」— ポアソン氏 (@hiroqn) June 28, 2019 $ curl https://nixos.org/nix/install | sh $ nix-channel --add https://nixos.org/channels/nixpkgs-unstable $ nix-channel --update Cachix

          Nix で Haskell IDE Engine をシュッと入れる - ryota-ka's blog
        • Micro C, Part 0: Introduction – Joseph Morag

          In this series, we will explore how to write a compiler for a small subset of C to LLVM in Haskell. Our language, Micro C, is basically a small subset of real C. We'll have basic numeric types, a real bool type, pointers, and structs. At the end of the series, we'll have a beautiful executable, mcc (Micro C Compiler), that takes one .mc source file and produces an executable. Why another LLVM tuto

          • Deep Learning From The First Principles | Bogdan Penkovsky, PhD

            Breaking news! Artificial intelligence is taking over the world. Or it is not? Here is what you need to know about a deeper concept of meta-learning. Meta-learning is learning about learning. Learning how to learn belongs here too. Ever wondered how machines defeated the best human Go player Lee Sedol in 2016? A historical moment for the game that was previously considered to be very tough. What i

            • GitHub - ChrisPenner/slick: Static site generator built on Shake configured in Haskell

              Want to get started quickly? Check out the Slick site template! Slick is a static site generator written and configured using Haskell. It's the spiritual successor to my previous static-site generator project SitePipe; but is faster, simpler, and more easily used in combination with other tools. Slick provides a small set of tools and combinators for building static websites on top of the Shake bu

                GitHub - ChrisPenner/slick: Static site generator built on Shake configured in Haskell
              • The <code>&lt;- pure</code> pattern

                Summary: Sometimes <- pure makes a lot of sense, avoiding some common bugs. In Haskell, in a monadic do block, you can use either <- to bind monadic values, or let to bind pure values. You can also use pure or return to wrap a value with the monad, meaning the following are mostly equivalent: let x = myExpression x <- pure myExpression The one place they aren't fully equivalent is when myExpressio

                • SCamlによるTezosプログラミング#0

                  SCaml という Tezos ブロックチェーン のためのスマートコントラクト記述言語とコンパイラを作って元旦にリリースしました。 コンセプトの紹介(英語) リリースのお知らせ(英語) プロジェクトページ レポジトリ 第0回: コンセプトの説明 第1回: 準備 第2回: 概観 第3回: ウォレット操作 第4回: スマートコントラクトのデータ型 第5回: はじめての SCaml コントラクト 第6回: もう少し複雑なコントラクト。パラメータとストレージ 第7回: 投票コントラクトを書いてみる このブログではSCamlを使ったTezosスマートコントラクトプログラミングについて少しずつ日本語で連載をしていきたいと思います。 初回はプログラミングではなく、SCamlの基本設計コンセプトについてです。一部、プログラミング言語設計についての知識がなければ理解できないところがありますが、読み飛ばされて

                    SCamlによるTezosプログラミング#0
                  • 最強にして最速のビルダー、mason - モナドとわたしとコモナド

                    Haskell Advent Calendar 2019 5日目 この冬、神速のサンタクロースがやってくる—— Haskellにおいて、バイト列の表現はByteStringが定番である。ByteStringはPinned領域に直接格納され、空間効率はリストに比べればはるかに良い。しかし、Pinned領域にあるとヒープフラグメンテーションが起こりやすくなるということでもあり、細かい文字列をつなぎ合わせるような使い方はパフォーマンスに悪影響が及ぶ。そのような問題を避けるため、ビルダーと呼ばれる構造が用意されている。 Data.ByteString.Builderは、word8 42 <> byteString "hello" <> doubleLE 42のように細かいプリミティブを連結し、toLazyByteStringを呼ぶと最後にByteStringを一気に鋳出せるという仕組みである。By

                      最強にして最速のビルダー、mason - モナドとわたしとコモナド
                    • SOPを使ってジェネリックにCase Analysis関数を実装する

                      case analysis関数が何かについては、まず kakkun61氏 の以下の記事を参照してください。 case analysis関数はデータ型毎に定まる関数ですがよくよく見てみるとシンプルなルールで統一的に実装できそうです。 Haskellで同じ名前の関数を使って複数のデータ型を扱えるようにするには、モジュールを分けたり型クラスを利用したり工夫する必要があります。 この記事ではジェネリックプログラミングの考え方に基づき、様々なデータ型に対応した一つのcase analysis関数を実装してみたいと思います。 これから実装するgfold'(generic fold)という関数は以下のような振る舞いをするようになります。 > :t unFun . gfold' @Bool unFun . gfold' @Bool :: Bool -> r -> r -> r > :t unFun . g

                        SOPを使ってジェネリックにCase Analysis関数を実装する
                      • XMLをLisp評価器で実行する - golden-luckyの日記

                        昨日は、ドキュメントとは木であり、その木はXML、さらにいうとXMLアプリケーションとして形作られる、という話をしました。 一般にドキュメントは、生のままの構造として読み手に与えられるものではありません。 ドキュメントの構造が何らかのXMLアプリケーションであれば、本来はそのスキーマに従って解釈し、しかるべきスタイルを適用することになります。 ここで、しばしば厄介になるのは、XMLアプリケーションのスキーマを正しく扱うのはなかなか大変だということです。 そもそも、プロプラなXMLアプリケーションだと、スキーマの定義が手に入らない場合もあります。 そういった「野良XMLをどうやって扱うか」が今日からの話題です。 でもその前に、昨日の記事の最後で紹介したSXMLについて雑に補足しておきます。 XMLをSXMLに引き写すことで見える景色 さて、昨日はSXMLという技術を紹介しました。 SXMLの

                          XMLをLisp評価器で実行する - golden-luckyの日記
                        • 独断と偏見で語るGHCのderiving系拡張 - Qiita

                          先日のHaskell Dayでderivingに関する発表があった Haskell Day 2019を開催しました! aiya000, 「しんさんきぼう」のDerivingストラテジー ので、触発されて私もderivingについて思うところを書いてみます。主にderiving系拡張の落とし穴・注意点に重点を置きます。 標準でderiveできるやつ、またはGHCに組み込まれているやつ (stock deriving) 標準で Eq, Ord, Enum, Bounded, Show, Read, Data.Ix.Ix がderiveできます。この手の話題で Ix はよく見落とされます。ちゅうか Haskell 2010 Language Report, Chapter 11 のderive可能なクラスの一覧からもオミットされている……。 GHC拡張を有効にすることで、他のいくつかのクラスでも

                            独断と偏見で語るGHCのderiving系拡張 - Qiita
                          • for文がわかるプログラマのためのモナド最速入門 - Qiita

                            はじめに 近頃の for 文は、コレクションの要素を直接参照できたり、 yield で評価結果を返せたり、多重ループを一気に回せたり、便利なものが多いですね。たとえば Scala であれば、こんなふうに書けます。 val list = for { a <- List(100) b <- List(10, 20) c <- List(1, 2, 3) } yield a + b + c print(list) // List(111, 112, 113, 121, 122, 123) この for 文のみを頼りに、ときおり関数型プログラマが唱える「モナド」に入門してみよー、というのが本記事の趣旨です。 なるべく簡単なコードを挙げながら、できるだけ「圏論」の各種定義やその気持ちまで掘っていくので、前提知識なしで読みすすめられると思います。 Scala の for 文 まずは Scala 使いで

                              for文がわかるプログラマのためのモナド最速入門 - Qiita
                            • Lensとは - Qiita

                              Lensとは、初級者Haskellerの苦い思い出 さあさあ、やって参りました。 Haskell何個目かの鬼門にして、素晴らしく便利なアイツ、Lensの時間です。 初級者HaskellerにとってのLensといえば、「これを知らなきゃ初級者Haskellerにもなれない」と突然突きつけられて、何かと思って蓋を開ければ地獄のような型が覗く、恐怖と畏怖の対象でしょう。 調べてみても、様々な言葉で説明されるLensは、いかにもつかみどころのないものに思えます。 Lensはgetterとsetterのペア 参考: Lensの仕組みがわかった#lensを自作してみる レンズは余状態余モナドの余代数だった type Lens s t a b = forall f. Functor f => (a -> f b) -> s -> f t Control.Lens.Combinators#t:Lens よ

                                Lensとは - Qiita
                              • Scala3と圏論とプログラミング - Qiita

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

                                  Scala3と圏論とプログラミング - Qiita
                                • ベクトルからリストを作る方法 〜次数付きモナドのカン拡張〜

                                  ベクトルとリスト 要素を並べたデータ構造を考える時、 ベクトルは長さが予め(型レベルで)決められたもの リストは任意の長さを取れるもの と区別することがあります。 Haskellの型で表すと、

                                    ベクトルからリストを作る方法 〜次数付きモナドのカン拡張〜
                                  • 自動微分と区間演算で非線形関数の根を全て探索するアルゴリズム - Qiita

                                    自動微分について調べていたら『精度保証付き数値計算の基礎』という本に出会いました。その中に非常に面白い応用が載っていたので紹介したいと思います。 allsol :: (RealFloat a, Ord a) => (forall b. Floating b => b -> b) -- 根を求める非線形関数 -> [Interval a] -- 探索する区間 -> [Interval a] -- 根が含まれている区間 これが今回紹介する、与えられた非線形関数$f$の与えられた区間における根、すなわち$f(x)=0$を満たすような$x$をただ一つ含む区間を全て探索してくれる関数(の型)です。実装を見る前にその威力を実際に使って確かめてみましょう。 > f x = (x - 1) * (x - 2) * (x - 3) > allsol f [-1e6...1e6] [ 0.9837477320

                                      自動微分と区間演算で非線形関数の根を全て探索するアルゴリズム - Qiita
                                    • 純粋関数のプロパティを記述するには - John Hughes氏のLambda Days 2020での講演より

                                      Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。この本では、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重要な変...

                                        純粋関数のプロパティを記述するには - John Hughes氏のLambda Days 2020での講演より
                                      • 新しいGHC拡張、NoFieldSelectorsについて - モナドとわたしとコモナド

                                        今まで不満の多かったHaskellのレコードの扱いを改善するための一歩として、NoFieldSelectorsというGHC拡張の実装を進めている。 動機 Haskellにはレコードを定義するための構文がある。 data User = User { userId :: Int , userName :: Text } こう定義すると、各フィールドごとにuserId :: User -> IntとuserName :: User -> Textというゲッターに相当する関数が生成される。これらの関数は特別な意味合いを持っており、以下のレコード操作の構文にも利用できる。 構築 User { userId = 0, userName = "Zero" } パターンマッチ case foo of User { userId = x, userName = name } -> ... 更新 foo {

                                          新しいGHC拡張、NoFieldSelectorsについて - モナドとわたしとコモナド
                                        • Type level mapを使ったpreload風関連リソースの取り回し。Indexed monad添え

                                          この記事はHaskell Advent Calendar 202011日目の記事です(遅延)。 大晦日です。いかがお過ごしでしょうか。 Haskellでapi server等を作った際、rdbへの問い合わせでPreload的なことを行う箇所で、Type level mapを使った所、なかなかの使い勝手だったので、共有します。 さらにIndexed Monadを使い、明らかに残念だった箇所を改善します。 preload? 1+N問題を起こさぬよう、事前に関連リソースを問い合わせておくもの。prefetchとかとも。 posts = Post.find(...) # query Post # view for p in posts for t in p.tags # ここで問い合わせるとN回なので、事前に問い合わせていて欲しい render t やること viewが要求するpreloadを定義

                                            Type level mapを使ったpreload風関連リソースの取り回し。Indexed monad添え
                                          • The ultimate guide to Haskell Strings · Hasufell's blog

                                            © 2021. All rights reserved. Site created with Hakyll. Modified theme lanyon-hakyll based on Lanyon. The ultimate guide to Haskell Strings May 7, 2024, Posted by Julian Ospald This guide is aimed at Haskellers who seek to improve their understanding of String types, be it beginners or seasoned developers. It is also meant to be a quick reference/cheat sheet for deciding which string type to use in

                                            • 多相関数を第一級で取り扱う

                                              今回は,GHC拡張の一つ RankNTypes の紹介をしようと思う.もうちょっとちゃんとまとめたのをいつか Haskell-jp かどっかに投稿したいと思ってるんだが,時間が (さっさと書け). さて, Haskell のプログラミングにおいて多相関数はかなり重要な役割を持つ.しかしながら,標準の範囲では多相関数自体を第一級の値として扱うことはできない.私たちに許されるのは,多相関数を定義することだけだ.まあ,それだけでもかなり有用なんだけど,多相関数を第一級で扱えると,色々プログラミングの幅が広がる.今回は,多相関数を第一級として扱うというのはどういうことか,そしてそれをするにはどうすればいいか,そうすることで何がうれしいのかを簡単に触れられたらと思っている. 多相関数を第一級で扱うとはどういうことか (パラメトリック)多相関数 ((parametric) polymorphic fu

                                                多相関数を第一級で取り扱う
                                              • HaskellでAtCoderに参戦して水色になった | 雑記帳

                                                3月下旬からAtCoderのRatedコンテストに参加しています(AtCoderプロフィール)。この度、5月26日のABC128でようやく水色になりました(AtCoder社長の記事によると、これは上位15%に相当するらしいです)。 使用言語はHaskellです。コンテストの時間中に提出したコードは全てHaskellだったと思います。 この記事では、Haskellを使う理由や、Haskellで競技プログラミングをするコツ、AtCoderでHaskellを使う際のアレコレなどを書いていきます。「水色になるための方法」みたいな話はしません(できません)。 Haskellを使う理由 私のメイン言語はHaskellなので、競技プログラミングでもHaskellを使うのは自然な発想です。 ただ、Haskellは工夫すれば高速なコードを書けますが、あちこちに「遅くなる」罠があります。罠に怯えるくらいならH

                                                • Implementing HTTP/3 in Haskell - あどけない話

                                                  Mew.org is now speaking HTTP/3 (HTTP/2 over QUIC). If you gain access to the site using Firefox Nightly, the first connection would be HTTP/2 then the following connections should be HTTP/3 led by Alt-Svc:. Firefox Nightly This article explains insights which I found through the implementation activities of QUIC and HTTP/3 in Haskell. HTTP/2 server library I started implementing QUIC in January 20

                                                    Implementing HTTP/3 in Haskell - あどけない話
                                                  • F# ではじめる関数型プログラミング入門 (上巻)

                                                    .NET ファミリーの関数型プログラミング言語である F# を利用した、全 3 巻構成の関数型プログラミング入門書籍となります。 上巻では F# の基本的な文法などの学習ができます。 なお、この書籍は本編をすべて無料で利用いただけますが、活動を応援いただける場合には最終チャプターをご購入いただけますと嬉しく思います。

                                                      F# ではじめる関数型プログラミング入門 (上巻)
                                                    • Kowainik - Foo to Bar: Naming Conventions in Haskell

                                                      Developers spend most of their time reading code, understanding it and exploring other ways to use existing solutions. Frankly, in our profession, there is very little time on actually writing new libraries and creating new interfaces in real-life development. So it is quite important to have some help in the most common activities. Naming conventions is one such thing that improves readability an

                                                        Kowainik - Foo to Bar: Naming Conventions in Haskell
                                                      • HerokuにHaskellで作ったWebサービスを公開する簡単な方法 - Qiita

                                                        趣味で作ったWebアプリをHerokuにデプロイしたのですが、4年前にまとめたHerokuにHaskellのアプリを公開するに比べてかなりデプロイが簡単になっていたので設定方法をまとめておこうと思います。 GW暇だったので簡単なバーチャルオフィスみたいなアプリを作りましたー!バックエンドはHaskellとServantで作ってます✌/ lotz84/remote-househttps://t.co/VWPRPtMN87 pic.twitter.com/CbkZ0IpMss — lotz (@lotz84_) May 4, 2020 設定方法 結論、Dockerを利用したデプロイがとても楽です。 事前にHeroku側のアプリを新規作成しデプロイするWebサービスを用意しておきましょう。ここではweb-serviceという名前のプロジェクトを作成したと仮定しますので以下のファイル名などは適宜置

                                                          HerokuにHaskellで作ったWebサービスを公開する簡単な方法 - Qiita
                                                        • GitHub - darrenks/atlas: concise functionless functional esolang

                                                          A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

                                                            GitHub - darrenks/atlas: concise functionless functional esolang
                                                          • GitHub - b3nj5m1n/xdg-ninja: A shell script which checks your $HOME for unwanted files and directories.

                                                            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 - b3nj5m1n/xdg-ninja: A shell script which checks your $HOME for unwanted files and directories.
                                                            • 圏論入門前の準備運動―集合と写像― - Qiita

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

                                                                圏論入門前の準備運動―集合と写像― - Qiita
                                                              • scrapscript

                                                                greet <| person::ron 3 . greet : person -> text = | #cowboy -> "howdy" | #ron n -> "hi " ++ text/repeat n "a" ++ "ron" | #parent #m -> "hey mom" | #parent #f -> "greetings father" | #friend n -> "yo" |> list/repeat n |> string/join " " | #stranger "felicia" -> "bye" | #stranger name -> "hello " ++ name . person : #cowboy #ron int #parent (#m #f) #friend int #stranger text "hi aaaron" Scrapscript i

                                                                • Monoids in the Category of... | Blog | jackkelly.name

                                                                  The unfortunate meme phrase “a monad is just a monoid in the category of endofunctors, what’s the problem?” comes from two sources: The fact and most of the phrasing comes from Mac Lane’s Categories for the Working Mathematician, but “What’s the problem?” is a cheeky addition from a funny 2009 blog post: A Brief, Incomplete, and Mostly Wrong History of Programming Languages The meme words have bec

                                                                  • GHC 9.2 で導入されたQuick Look型推論アルゴリズムについて - 朝日ネット 技術者ブログ

                                                                    初めまして、朝日ネット開発部の hogeyama です。 今回は Haskell の中級的なトピックとして、 GHC 9.2 で導入された Quick Look 型推論アルゴリズムを取り上げようと思います。 概要 Haskell のデファクトスタンダードなコンパイラである GHC では通常の多相(ジェネリクス)の一般化である非可述的多相(impredicative polymorphism)を実装していますが、その型推論アルゴリズムは長らく「型推論が弱い」「実装が不安定でコンパイラのバージョンアップでデグレが起きる」といった問題を抱えていました。 しかし昨年10月、Quick Look という新しいアルゴリズムが GHC 9.2 に実装されたことでこの問題が解決しました。 本記事ではこの Quick Look によって何が変わるのか、利用する際に何に気をつければよいのかを非可述的多相の概要

                                                                      GHC 9.2 で導入されたQuick Look型推論アルゴリズムについて - 朝日ネット 技術者ブログ
                                                                    • 最短経路問題をCofree+Nexus構成で解く - Qiita

                                                                      タイムラインにでてきたやつです. 進捗。「Pythonどころかプログラムもはじめて」という学生に容赦なく動的計画法をぶっこんでいくスタイル。 pic.twitter.com/23FkNYy4ZP — ロボ太 (@kaityo256) 2019年6月7日 よくある問題ですね. ダイクストラで解くのが定番だと思いますが,最近CofreeでNexus構成するのがマイブームなのと問題のネットワークもたまたま二分木で表現できる範囲だし,今回はその方向で解いてみました. 実装 直近で書いた累積百ます計算,パスカルの三角形,関・ベルヌーイ数を計算するとあんまり変わりません. ここでTreeの枝に重みを持たせるように双関手TreeFを台関手として定義します. -- | Tree data TreeF a x = Tip a | Bin (a, x) (a, x) deriving Show type Tr

                                                                        最短経路問題をCofree+Nexus構成で解く - Qiita
                                                                      • 閉半環を使ってグラフ上の最短距離を計算する!

                                                                        この記事は Haskell Advent Calendar 2020 21日目の記事です。 以前の記事でトロピカル行列を使ったグラフの最短経路の求め方を解説しました。 ここではトロピカルな隣接行列の累乗を収束するまで繰り返すという方法で最短経路を計算しましたが、実は閉半環という代数を考えると直接的に最短経路を求める計算が可能になります。そこで今回はその方法について解説したいと思います。 以前はHaskellのリスト [a] をベクトルとして行列を実装しましたが、今回はそれだと実装が少し煩雑になるので型レベル自然数を型引数に持つ Vector n a を中心に実装していきたいと思います。この話は以下の Functional Pearl が元になっていますが、この論文もリストを使って実装されているので Vector n a を使ってどのように実装できるかはこの記事で新しく試したところです。 ト

                                                                          閉半環を使ってグラフ上の最短距離を計算する!
                                                                        • 2020年に「すごいHaskellたのしく学ぼう」を { -# OPTIONS -Wall -Werror #- } を付けて読む - Qiita

                                                                          2020年に「すごいHaskellたのしく学ぼう」を { -# OPTIONS -Wall -Werror #- } を付けて読むHaskell はじめに 現在、書籍「すごいHaskellたのしく学ぼう」(第1版第4刷)を読んでHaskellを勉強しています。 Haskell入門の良書として有名なようなのですが2012年発行で多少情報が古くなっているので、今からこの書籍を読もうという方はこちらの記事などを参考にすると良いと思います。 2017年に「すごいHaskellたのしく学ぼう」を読む この書籍の p. 37 の訳注で、{-# OPTIONS -Wall -Werror #-} という記述を .hsファイル(Haskellのコードを記述するファイル)の先頭行に付け、通常より厳密な警告を有効にすることが提案されています。こうすると:l hogehoge(ファイル名)で.hsファイルをコン

                                                                            2020年に「すごいHaskellたのしく学ぼう」を { -# OPTIONS -Wall -Werror #- } を付けて読む - Qiita
                                                                          • 圏論入門|日本評論社

                                                                            第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

                                                                              圏論入門|日本評論社
                                                                            • GitHub - graninas/software-design-in-haskell: Software Design in Haskell. A structured set of materials. How to build real-world applications in Haskell.

                                                                              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 - graninas/software-design-in-haskell: Software Design in Haskell. A structured set of materials. How to build real-world applications in Haskell.
                                                                              • 動的配列の無難なHaskell実装 - モナドとわたしとコモナド

                                                                                qiita.com C++、Rust、Pythonなど、他の言語では当たり前のように多用される動的配列だが、Haskell実装は(開発を始めた時点では)見当たらなかったので作ってみたお話*1。 動的配列とはミュータブルな配列の一種で、通常の配列操作だけでなく、末尾への要素の追加・削除が定数時間で行える構造である。確保しておいた領域がいっぱいになったら、その2倍の大きさの領域を確保するという方法によって、漸近的には要素の追加は定数時間となる。 内部の配列には、デファクトスタンダードであるvectorパッケージを用いる。Vectorには無印(boxed)、Unboxed、Storableの三種類の変種があり、それぞれ以下のように使い分ける。 無印(Data.Vector): サンク含め、任意のHaskellのオブジェクトを格納できる。Traversableなどのインスタンスであり、汎用性が高い

                                                                                  動的配列の無難なHaskell実装 - モナドとわたしとコモナド
                                                                                • GitHub - lyokha/nginx-haskell-module: A comprehensive web framework aimed at building custom Haskell handlers for the Nginx Web Server

                                                                                  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 - lyokha/nginx-haskell-module: A comprehensive web framework aimed at building custom Haskell handlers for the Nginx Web Server