Haskell

OpenGLTutorial2

立体的にCubeを描き、回す .cabal name: h170505 version: 0.1.0.0 -- synopsis: -- description: homepage: https://github.com/githubuser/h170505#readme license: BSD3 license-file: LICENSE author: Author name here maintainer: example@example.com…

Haskellで乱数

これを動かしたい いろいろ調べもの 調べもの1 調べもの2 調べもの3 調べもの4 調べもの5 stack ghci import System.Random import ./models/Dice.hs import ./src/Control/Monad/Bayes/Simple.hs let g = mkStdGen 0 random g :: (Int,StdGen)

構文解析 48時間でSchemeを書こう

Ubuntu用のlibghc-parsec-devをインストール sudo apt-get install libghc-parsec3-dev テキストに沿ってファイル file2.hs を作ってコンパイルする import Text.ParserCombinators.Parsec hiding (spaces) import System.Environment import System.IO impo…

最初の一歩〜48時間でSchemeを書こう

最初のファイル "file1.hs" module Main where import System.Environment main :: IO () main = do args <- getArgs putStrLn ("Hello, " ++ args !! 0) ghc -o hello --make file1.hs ./hello r 第二のファイル file1_1.hs module Main where import Syste…

48時間でSchemeを書こう

Haskellの像が見えてきたので以前やりかけてやめてしまった"48時間でScheme"の冒頭を再度、写経してみる

かじりかけのHaskell評

Haskellを覚えるときに、どういう位置づけにするか Haskellは代数的にプログラミングするのが好きなのであって、個別の事例は「たまたま見たかったものを見ることにした」という位置づけ Haskellでは次のような「もの」がある 「階層」を表す用語 「階層に帰…

Chapter4 Sets, Types and Lists

importしてみて、使ってみる Data.Listなるものをimportしてみる その中のnubという関数を使う(重複を除いて出してくれる) それをIO()標準出力させてみる print関数を使えば、STALモジュール内の関数の結果を表示できる(Show属性を持つタイプなら) module ST…

Chapter1 Getting Started〜Haskell モジュールの写経

とにかく写経してGS.hsなるファイルを作る Stackがデフォルトで作ったLib.hsをまねて作る 作成した「わり切れるかの判定」関数も外から参照可能にする Lib.hsと同じくsrcディレクトリに置く app以下にあるMain.hsにGS.hsをインポートさせ、GS.hsのsomeFuncGS…

Chapter 2 Talking About Mathematical Objects

中置演算子の定義。演算優先度を整数で指定する。中置演算子は ( ) でくくると、通常の演算子 module TAMO where someFuncTAMO :: IO () someFuncTAMO = putStrLn "TAMO" {- 向きによらない中置演算子の定義 x ==> y (==>) x y は同じ 演算子には、優先順位…

Stackのプロジェクト環境〜Haskell モジュールの写経

The Haskell Road To Logic, Maths And Programming (Texts in Computing)作者: Kees Doets,Jan van Eijck出版社/メーカー: Kings College Pubns発売日: 2004/05/07メディア: ペーパーバック クリック: 3回この商品を含むブログ (2件) を見る こちらにコード…

Haskell プロジェクトを作ってみる〜私のためのHaskell再入門3

まず。(Stackとは、はこちら) stack new ry して、"ry"なる名前のプロジェクトを作る。 のように、諸々のファイル・フォルダができる。 stack install とすると、必要なパッケージを取り入れながら、回るようにしてくれる このコマンドライン出力からわかる…

Haskell コーディング仕様その2〜私のためのHaskell再入門2

IDと演算子とリテラルと特別記号とでコードを書く ID variable IDとconstructor IDとに分かれるが、さらに働き方で分ける variable ID (小文字始まり) variable ID type variable ID constructor ID (大文字始まり) constructor ID type constructor ID type…

Haskell コーディング仕様〜私のためのHaskell再入門2

Haskellをやり始めると、「できるようになろうよ」というチュートリアルや、「数学的にはこうで…」というチュートリアルにばかり行き着く… 、のですが、コードを読んだり書いたりするためにはsyntaxとかlexica(lexicon)とかの情報が少なすぎてつらい… 結局、…

Haskellメモ

2次元平均曲率フローをHaskellで:こちら 連立変微分方程式のためのHaskellパッケージParaiso

よくやる処理のHaskell流のやり方

全列挙: [x^2 | x <- [1,3,5]] 総当りペア: [(x,y) | x <- [1..4], y <- [3..5]] ペア [(x1,x2) | x1 <- [1..4],x2 <- [1..4],x1 < x2] 隣接ペア zip [1..4] (tail [1..4]) より詳しく集合の内包表現: [x|x <-[1..20],x `mod` 3 ==0]

関数定義を読む、関数を定義して作る

関数は、型を持つ。通常の関数は、引数を取って値を返すので、引数の型から返り値の型へ、という型の定義を持つ 関数は、型定義の他に、どのような処理をするかの定義も持つ 関数は、上記の2つの定義からなる recip :: Fractional a => a -> a recip n = 1/…

Haskellのその他の特徴や使うときのコツ

型を調べる "False"はBool型である >:type False False :: Bool "cos"は型 a を引数として、型aを返す関数である。ただし、aをFloatとする >:type cos cos :: Folating a => a -> a カリー化 関数は複数の引数を取りうるが、それを、別の形で定義することも…

私のためのHaskell再入門

Haskell環境の準備 StackというHaskellのコンパイル制御ツールを使って、特定のパッケージを使う環境を整えると、『その環境のための』ghciまで入る。特定のパッケージを使うわけではなく、ローカルでHaskellの何かを始めようとするときにもStackを使うと、g…

Haskell パッケージをstackで

HaskellではMCMCベイズ推定をモナドで実装できるらしい その論文がこちらで、それを実装しているHaskellパッケージ monad-bayesがこちら そのパッケージのインストールは、Haskell-stackを入れてやるのがよいらしい パッケージの依存関係を調べて、入れてく…

Stack

Haskellのビルドの管理方法 Stackについての調べ物 簡単に言うと、Haskellの開発をするにあたって、プロジェクト単位で、どんな依存関係があって、どんなバージョンでうまく行ったのかを管理しよう、という発想 なので、プロジェクトを作るたびに、ローカル…

HaskellでMCMC

こちらの記事のソースを"test.hs"と保存して こちらにあるように コマンドラインから ghc -o test test.hs とコンパイルして ./test と実行すれば、二次元乱点座標がずらーっと標準出力される これでghciも入ったので ghci とコマンドを打てば、"stack"を使…

Stackを介したWindowsへのHaskellの導入

Linuxに導入するのは簡単 Windowsの場合は こちらからstackのインストーラを取ってきて、それを使ってstackが動くようにして こちらから git clone https://github.com/commercialhaskell/stack.git して、 cd stack と、移動した上で以下のようにビルドする…

3 Some Familiar Data Structures in a Functional Setting ぱらぱらめくる『Purely Functional Data Structures』

Leftist heaps、Binomial queues、red-black trees 手続き型言語が持つデータ構造は、関数型言語に移しやすいものとそうでないものがある 移しやすい例 leftist heaps : 手続き・関数のどちらでも実装しやすい binomial queues: 関数型でやりやすい red-blac…

2 Persistence ぱらぱらめくる『Purely Functional Data Structures』

リスト・二分岐木 Persistence データ構造オブジェクト(の一部)をコピーして作るようなときに、元のオブジェクトは維持して、値呼び出しための番地操作によって対応すれば、元のオブジェクトも含めて、いつまでも使いまわせる。逆に言えば、書き換えはしない…

1 Introduction ぱらぱらめくる『Purely Functional Data Structures』

データ構造を説明する前に用語の混乱を避けるための注意をしておく An abstract data type : 型と型のために作られた関数群のことで、abstractionと呼ぶことにする An concrete realization of an abstract data type : Implementation(実装)のことを指す。…

Preface、SML概観 ぱらぱらめくる『Purely Functional Data Structures』

Haskellは関数型言語。Standard MLもそう。SMLはOCalm系らしい。似ている点もあれば違う点もある(こちら)。 共通点 First-class support for algebraic datatypes (disjoint unions) Pattern matching on primitive and custom values Arbitrarily higher or…

ぱらぱらめくる『Purely Functional Data Structures』

関数型プログラミングによるデータ構造の扱いを知るためにSML使用者が書いた本を眺めてみる。ハスケルコードも付録についている Purely Functional Data Structures作者: Chris Okasaki出版社/メーカー: Cambridge University Press発売日: 1999/07/01メディ…

1 Getting Starged 使ってみよう ぱらぱらめくる『The Haskell Road to Logic, Maths and Programming』

この本は、各章がモジュールになっている hugsを使うことを前提として書いてある(このブログはghciを使っている。ずっと続けられるか、どこかでうまくいかなくなるかは、おいおいわかるはず) Exercise 1.3 以下をprime.hsというファイルで保存 divides d n =…

10 Corecursion ぱらぱらめくる『The Haskell Road to Logic, Maths and Programming』

ones = 1 : ones -- [1,1,1,1,1,...] nats = 0: map (+1) nats -- [0,1,2,...] nats !! 10^100-2 -- 999999999999999999999...98 odds = 1 : map (+2) odds iterate :: (a -> a) -> a -> [a] iterage f x = x : iterate f (f x) theOnes = iterate id 1 theN…

9 Polynomials 多項式 ぱらぱらめくる『The Haskell Road to Logic, Maths and Programming』

整数係数多項式 多項式も代数的には「数」なので、自然数・有理数・実数・無理数・複素数の流れで定義拡張できる