タグ

mathとHaskellに関するNyohoのブックマーク (14)

  • 超関数型プログラミング

    この記事はFOLIO Advent Calendar 2022の23日目です。 ソフトウェア2.0 ソフトウェア2.0 という新しいプログラミングのパラダイムがあります。これは Tesla 社のAIのシニアディレクターだった Andrej Karpathy が自身のブログ記事("Software 2.0")で提唱した概念で、 ニューラルネットワーク のような最適化を伴うプログラムを例に説明されています。 従来のプログラム(Software 1.0)は人間が命令に基づいたプログラムを作成し、望ましい挙動を行わせます。それに対してニューラルネットワークのようなプログラム(Software 2.0)では人間はある程度の自由度をパラメータという形で残したプログラムを作成し、「入出力のペア」や「囲碁に勝つ」というような教師データや目的を与えてプログラムを探索させるというものです。 画像出典: "So

    超関数型プログラミング
  • 閉半環を使ってグラフ上の最短距離を計算する!

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

    閉半環を使ってグラフ上の最短距離を計算する!
  • 関数と型で理解する自動微分

    Slackワークフローで感謝を伝える機能/WiFi 自動接続/Figma to React Component/障害レポート君 Team3@NOT A HOTEL

    関数と型で理解する自動微分
    Nyoho
    Nyoho 2019/11/14
    「多値・多変数になると計算効率に差が出る」
  • Haskellの型と直観論理 - 朝日ネット 技術者ブログ

    開発部のxgotoです。Haskellの初級・中級者向けのトピックを取り上げたいと思います。 今回は型(Type)についてです。型はHaskellの入門書でも必ず最初のほうに説明されるもので、手元のによれば、 型とは、互いに関連する値の集合である。 ---- 『プログラミングHaskell』 Graham Hutton 著 / 山和彦 訳 だとか、 値の世界は型と呼ばれる系統的な集まりへと分割される。 ---- 『関数プログラミング入門 Haskellで学ぶ原理と技法』 Richard Bird 著 / 山下伸夫 訳 などのように書かれています。たとえば Bool は True と False の2つの値からなる集合だし、Intは整数の集合というように、型は値の集合というふうにみることができます。それならば型などと呼ばずに集合と呼べばいいと思いますが、「異なるものには異なる名前をつけろ

    Haskellの型と直観論理 - 朝日ネット 技術者ブログ
  • 動的計画法を実現する代数〜トロピカル演算でグラフの最短経路を計算する〜 - Qiita

    トロピカル半環と呼ばれる代数構造上のトロピカル行列を利用すると動的計画法を使ってグラフの最短経路の距離を計算するという問題が単純な行列積で解けてしまうらしい。そんな噂12を聞きつけて我々はその謎を解き明かすべく南国(トロピカル)の奥地へと向かった。 トロピカルな世界に行くためにはまずは代数を知る必要がある。要するに群・環・体の話だ。しかしこの記事の目的は代数学入門ではないので詳しい話は他の記事3に譲るとし、さっそく半環という概念を導入する。それは 半環は以下の性質を満たす二つの二項演算、即ち加法(和)"$+$" と乗法(積)"$\cdot$" とを備えた集合$R$を言う $(R, +)$ は単位元 $0$ を持つ可換モノイドを成す: $(a + b) + c = a + (b + c)$ $0 + a = a + 0 = a$ $a + b = b + a$ $(R, \cdot)$ は単

    動的計画法を実現する代数〜トロピカル演算でグラフの最短経路を計算する〜 - Qiita
    Nyoho
    Nyoho 2019/07/12
    トロピカルのでグラフ最短経路できるの知らだったー
  • 自動微分を実装して理解する(前編) - Qiita

    近年、機械学習への応用により自動微分の技術が再び脚光を浴び始めています1。例えばDeepLearningを微分な可能な関数の組み合わせ論へと発展させた微分可能プログラミング2では、プログラミングにより実装した関数の導関数を求める操作が基的な役割を果たしています。この記事では自動微分に対する理解をより深めるために、自動微分のアルゴリズムをゼロから実装していきたいと思います。

    自動微分を実装して理解する(前編) - Qiita
  • 代数的データ型と初等代数学 - ryota-ka's blog

    この記事は以下のページに移転しました. blog.ryota-ka.me 「関数プログラミングとはなんですか?」と問われたときには「デ,データファースト……(震え声)」と答えることが多いのだが,実際 Haskell や OCaml などの言語を特徴付けるものとして,代数的データ型 (Algebraic Data Type; ADT) の存在は無視できないだろう.その有用性ゆえに,近年では新たな言語の策定の際にその概念が輸出され,RustSwift などの言語にも採用されている. 「代数的データ型とはなんですか?」と問われたときには―問われたことがないのでわからないのだが―おもむろに ghci か utop を立ち上げて,解説を始めるのではないかと思う.ひとしきり解説をした後,「つまり直積の直和なんですよ〜🙌✨」と言って話を締めくくるだろう. int 型や float 型など,「メモ

    代数的データ型と初等代数学 - ryota-ka's blog
  • 定理証明系 Haskell

    この記事は Haskell Advent Calendar 2013 および Theorem Prover Advent Calendar 2013 二十日目の記事であり、更にTCUGの新刊「Coqによる定理証明」の販促記事でもある。 型システム再考 Haskell は静的型付き言語だ。それだけでなく、強力な型推論や表現力の高い型システムを備えている。 型とは何だろうか。 こうした質問に対してよくある答えは、「値の種類を区別するためのタグ」になるだろうか。Int型は整数だし、Bool型は真偽値で、[Int]型は整数値リストを表す型だ。なるほど、値の種類を区別するものに見える。 しかし、この答えは間違ってはいないが、もっと相応しい云い方が出来るだろう。それは、「型は不変条件である」というものだ1。この言明は別に私固有の見方というわけではなく、ある程度の型レベルプログラミングをやった事のある人

    定理証明系 Haskell
  • なぜHaskell、なぜ圏論なのか - bitterharvest’s diary

    1.初めに これまで、さまざまな言語でプログラミングしてきたが、一番満足しているのはHaskellである。なぜという問いに一言で答えるならば、バグが入りにくい、あるいは、プログラムが信用できるということだろう。 この記事の前に、量子力学の世界をHaskellで構築することを試みた。連続系についてはまだ説明の途中であるが、その基となる離散系については完成している。量子力学は物理の世界でも難しい分野の一つだ。概念的に複雑な世界を記述しようとすると、とても、抽象度の高いプログラミング言語を必要とする。 現在のHaskellは、圏論(category theory)という数学を応用したプログラミング言語である。他の学問と比較すると、数学は抽象度が高い。圏論は、その中で、最も抽象度が高い分野の一つである(圏論よりも抽象度が高いのは最近話題になることが多いホモトピー型理論だ。この理論がプログラミング

    なぜHaskell、なぜ圏論なのか - bitterharvest’s diary
    Nyoho
    Nyoho 2016/10/03
    「圏論よりも抽象度が高いのは最近話題になることが多いホモトピー型理論だ。」へぇ〜
  • 圏とHaskellの型

    4. 話すこと Haskellの型の仕組みと圏論の対応 Haskellの型システム 圏論の概念 型 対象 関数 射 tuple 直積 either 直和 Functor 関手 (ある種の関数) 自然変換 Haskellの型システムが圏論に支えられている実例を見ていきま す. Kinebuchi Tomohiko 圏とHaskellの型

    圏とHaskellの型
  • HaskellのMonoid探検 - Qiita

    今日は如法会#4です。ということで、モノイドを探検することにしました。 なぜモノイドを探検をするかというとfoldMapを使いこなしたいからです。 環境 ghc 7.10.3 モノイドの一覧 まず、Haskellで使えるMonoidを確認してみます。 > import Data.Monoid > :i Monoid class Monoid a where mempty :: a mappend :: a -> a -> a mconcat :: [a] -> a -- Defined in ‘GHC.Base’ instance Num a => Monoid (Sum a) -- Defined in ‘Data.Monoid’ instance Num a => Monoid (Product a) -- Defined in ‘Data.Monoid’ instance Monoi

    HaskellのMonoid探検 - Qiita
  • GitBook – Knowledge management for technical teams

    GitBook brings all your technical knowledge together in a single, centralized knowledge base. So you can access and add to it in the tools you use every day — using code, text or even your voice.

    GitBook – Knowledge management for technical teams
  • Haskell/Denotational semantics - Wikibooks

    導入[編集] この章ではHaskellプログラムの意味がどのように形式化されるかという表示的意味論(denotational semantics)を説明します。「square x = x*x というプログラムの意味は、数をその平方数に写す数学の平方関数だ」ということを形式的に規定することはつまらないことにみえるかもしれませんが、それでは f x = f (x+1) のような無限ループするプログラムの意味はどうでしょうか? 以下ではまずこの疑問に対するScottとStracheyのアプローチを例示し、概して関数プログラムの、特に再帰的な定義の正しさについて論じる基盤を得ることにしましょう。もちろん、これらのトピックではHaskellプログラムを理解するために必要なものに集中します。[1] この章の他の狙いは、ある関数がその引数を評価する必要があるかどうかというアイディアを捉えた正格と遅延の概

    Nyoho
    Nyoho 2015/05/03
    表示的意味論
  • 代数的データ型と準同型写像 - プログラムモグモグ

    最近考えていることを述べます. 代数的構造と準同型写像に関する考察です. 特に必要な知識は無いつもりですが, Haskellのコードを読めると嬉しいです. import Prelude hiding 以下のものを隠しておいて下さい. import Prelude hiding ((+), (++), length, True, False, Bool) 自然数とリストの定義 まず, 自然数(非負整数)とリストの定義からスタートします. data Nat = Zero | Succ Nat deriving (Show, Eq) 自然数はこんな感じです. ペアノの公理ですね. ここでは, 表示できるようにShowクラスのインスタンスとして自動導出しています. 更に, 同値であるか調べられる, という意味で, Eqクラスの自動導出もしています. ここで注意していただきたいのは, 名前が重要では

    代数的データ型と準同型写像 - プログラムモグモグ
  • 1