Haskell
この章はどちらかというと、論理演算の概論。Haskellで実装できない・しないでよい部分も多いので読むのを基本に。 Connectives 論理演算子の話 and(conjunction),or(disjunction),not(negation),if-then(implication),if-and-only-if=iff(equivalence) GS> …
自然数をカリー入れ子で表し、それを「アラビア数字的自然数」として読み直す(順序のある集合としての1,2,...) 有理数は自然数の組、ただし、分母は0以外 無理数、実数、イプシロン・デルタ論法 複素数の定義。その演算の定義
数学的帰納法 ペアノの自然数(カリー) 再帰的定義 木構造上の再帰…フラクタルは扱われていないけれど、できるはず
像、カーネル :l FCT.hs image (\x -> (x-1)*(x-2)) [0..5] coImage (\x -> (x-1)*(x-2)) [0..5] [0]
関係は、順序を問題にするペアの集合として定まる 関係が持つ性質にはreflexive, irreflexive,symmetric,asymmetric,antisymmetric,transitive,intransitive, pre-order(quasi-order),strict-partial-order,parial-order,linear,total-orderとかがあって、そ…
4 Sets, Types and Lists 集合、型(型理論とかの型?)、リスト ぱらぱらめくる『The Haskell Road to Logic, Maths and Programming』
値をまとめて持つときに、順序を気にするか、気にしないか べき集合
昨日の記事で48時間でschemeをぱらぱらし始めて、「これは自分に向いていない」とすぐにやめたが… こちらの『The Haskell Road to Logic, Maths and Programming』は自分の読み方に合っている印象が強いので、ぱらぱらしてみる(PDF) The Haskell Road To Log…
既作成のモジュールを読み込んでみよう この章で作るいろいろは、TUOLP.hsとして保存するとして、その「空バージョン」を以下のように作るとしよう module TUOLP where import TAMO import GS myEven :: Integer -> Bool myEven x | rem x 2 == 0 = True | o…
構文解析 例題 import System.Environment import Text.ParserCombinators.Parsec hiding (spaces) symbol :: Parser Char symbol = oneOf "!#$%&|*+-/:<=>?@^_~" readExpr :: String -> String readExpr input = case parse symbol "lisp" input of Left er…
最初の一歩 例題 module Main where import System.Environment main :: IO () main = do args <- getArgs putStrLn ("Hello, " ++ args !! 0 ++ args !! 1) 練習問題 練習問題1 module Main where import System.Environment main :: IO () main = do args …
トップページ 目次 1 最初の一歩 2 構文解析 3 評価:第1部 4 エラー処理と例外 5 評価:第2部 6 REPLの作成 7 変数と代入 8 cheme関数の定義 9 IOプリミティブの作成 10 標準ライブラリに向けて 11 Conclusions and further resources 12 練習問…
GHCiコマンドによる調べもの こちらにコマンド一覧 そこから、調べもの系のコマンドを抜粋 :type expression expressionの型を推論し、印字する。多相型には明示的な全称量化が加えられる。推論に際して、単相性制限は適用されない。 :kind type typeの類を…
Haskell基礎文法最速マスターがよい Capm Network Haskellもよい データ型 型クラス 型シグナチャ・型推論 型コンストラクタ インスタンス(型クラスに属するデータ型のそれぞれに対して関数を定める)
こちらでHaskellと圏論についてメモした 随分、昔 少し、Haskellの知識が増えたので、何度目かの整理『Haskellと圏論』 基本資料はこのWikibooks 圏の基礎 「対象となる何かA『ソースオブジェクト』」→(AからBへと対応付けるものf『射』)→「対象となる何かB…
以下のようなファイルを">"もつけたまま、"DiagramsTutorial.lhs"という名前で適当な場所に保存して、 > {-# LANGUAGE NoMonomorphismRestriction #-} > > import Diagrams.Prelude > import Diagrams.Backend.SVG.CmdLine > > main = mainWith (circle 1 ::…
こちら 1,2,3,4,5と5要素あったときに、2,3,1,5,4と入れ替えたとすると、1->2->3->1と4->5->4とからできていると考えて、(1,2,3)(4,5)と言う表記をすることができる また、1は2に、2は3に、3は1に、という意味で(1,2),(2,3),(3,1),(4,5),(5,4)と書くことも…
まずは、ブログの最初にある、k次元超立方グラフ(こちら) module Main (main) where import Math.Combinatorics.Graph main = print $ q 2 Gのあとに、二つのリストがあって、第一のリストはベクトル型、第二のリストは、長さ2のベクトルのリスト。第一のリ…
昨日の記事の通り、開発環境を使って参照を簡単にした上で、数学的な諸々のHaskellでの記述方法を眺めていくことにする
こちらに"Haskell for Maths"なるブログがあって、"HaskellForMaths"なるパッケージをHackageに置いている人がいる きっと、Haskellの数学親和性に興味があって書いたり作ったりしている人だろうから、このパッケージを使うことを目的にHaskellの練習をして…
HaskellForMathsなるパッケージをとってきて使おうと思った cabalでインストールできた。たしかにローカルPCにあるし、leksahのModuleペインにも見えている $ cabal install HaskellForMaths インストールはファイルの在処まで行って、Setup.hsでもやってみ…
こちらからダウンロードしてインストールする(マック用は安定している古めのものがよいらしいというウェブ記事もあったので一代前のを入れることにする)。結構重い とにかくインストールして起動してみる いきなり、サンプルパッケージのためのmain関数のあ…
Haskellの色々なタイプやら関数やらをモジュールとして作り、さらにモジュールを合わせてパッケージにするらしい そのパッケージを「みんなで登録」する場所がHackageらしい(こちら) で、そのHackageがどういう状態なのか、チェックしつつ、パッケージインス…
定義をがっちり作って、それにうまく動くように関数を作って・・・という「がっちりした作り」ではなくて、定義・概念が相互にオーバーラップするような作りになっているのがタイプ・タイプクラス。そして、そのようなタイプ・タイプクラスの連結状態として…
関数処理を考えるときに、関数と引数との位置関係について、また、その処理順序指定記法について、よく考えて慣れることは大事。f(x)で書いたり、中置関数としたり、再帰したり・・・
ターミナルから実行して表示させるプログラムを作る main = putStrLn "hello" を書いたテキストファイルhs0129.hsを作成し、そのファイルの置き場にて、ターミナルで ghc --make hs0129 としてやれば、これはghcが持つコンパイラ機能により、実行可能プログ…
タイプ・タイプクラスの自作 以下をファイルに書いてロードすると、Showクラスを継承したPersonなるタイプができて、それは、String,String,Intを持つ。しかも、それをPerson->Stringというタイプ関係で扱う関数fが生成される data Person = Person { f:: St…
できあいの色々を使わないと!モジュール モジュールを集めたパッケージは、Hackageで管理してあって、それを取ってくるにはcabalというのが便利なのだけれど、Macは慣れていない(し、そもそもとってきたものがどこにあるのかの探し物をすることすら慣れてい…
mapはリストによく使う すべてのリスト要素に何か処理をするのがmap それに似ているのは、filter。これもすべてのリスト要素に何か処理をするが、条件に合ったものだけを返して、それ以外は返さないところが違う さらに類似は、foldl。これはリストの左から…
入力が7なら1を返し、それ以外なら0を返す関数を作る(hs0129.hsというファイルで保存) sevenorothers :: (Integral a) => a -> a sevenorothers 7 = 0 sevenorothers x = 1 これをロードして ghci> :l hs0129.hs [1 of 1] Compiling Main ( hs0129.hs, inte…
インテジェのリストだよ ghci> let a=[1..5] ghci> :t a a :: [Integer] 関数を書いて、そのタイプをチェック。リストを取ってその和を返す関数 そのタイプは、何かしらのタイプa(ただし、それはsumがとれるようなタイプであって、そのようなタイプはNumと称…