Haskell
立体的に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…
これを動かしたい いろいろ調べもの 調べもの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)
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…
最初のファイル "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…
Haskellの像が見えてきたので以前やりかけてやめてしまった"48時間でScheme"の冒頭を再度、写経してみる
Haskellを覚えるときに、どういう位置づけにするか Haskellは代数的にプログラミングするのが好きなのであって、個別の事例は「たまたま見たかったものを見ることにした」という位置づけ Haskellでは次のような「もの」がある 「階層」を表す用語 「階層に帰…
importしてみて、使ってみる Data.Listなるものをimportしてみる その中のnubという関数を使う(重複を除いて出してくれる) それをIO()標準出力させてみる print関数を使えば、STALモジュール内の関数の結果を表示できる(Show属性を持つタイプなら) module ST…
とにかく写経してGS.hsなるファイルを作る Stackがデフォルトで作ったLib.hsをまねて作る 作成した「わり切れるかの判定」関数も外から参照可能にする Lib.hsと同じくsrcディレクトリに置く app以下にあるMain.hsにGS.hsをインポートさせ、GS.hsのsomeFuncGS…
中置演算子の定義。演算優先度を整数で指定する。中置演算子は ( ) でくくると、通常の演算子 module TAMO where someFuncTAMO :: IO () someFuncTAMO = putStrLn "TAMO" {- 向きによらない中置演算子の定義 x ==> y (==>) x y は同じ 演算子には、優先順位…
The Haskell Road To Logic, Maths And Programming (Texts in Computing)作者: Kees Doets,Jan van Eijck出版社/メーカー: Kings College Pubns発売日: 2004/05/07メディア: ペーパーバック クリック: 3回この商品を含むブログ (2件) を見る こちらにコード…
まず。(Stackとは、はこちら) stack new ry して、"ry"なる名前のプロジェクトを作る。 のように、諸々のファイル・フォルダができる。 stack install とすると、必要なパッケージを取り入れながら、回るようにしてくれる このコマンドライン出力からわかる…
IDと演算子とリテラルと特別記号とでコードを書く ID variable IDとconstructor IDとに分かれるが、さらに働き方で分ける variable ID (小文字始まり) variable ID type variable ID constructor ID (大文字始まり) constructor ID type constructor ID type…
Haskellをやり始めると、「できるようになろうよ」というチュートリアルや、「数学的にはこうで…」というチュートリアルにばかり行き着く… 、のですが、コードを読んだり書いたりするためにはsyntaxとかlexica(lexicon)とかの情報が少なすぎてつらい… 結局、…
2次元平均曲率フローをHaskellで:こちら 連立変微分方程式のためのHaskellパッケージParaiso
全列挙: [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/…
型を調べる "False"はBool型である >:type False False :: Bool "cos"は型 a を引数として、型aを返す関数である。ただし、aをFloatとする >:type cos cos :: Folating a => a -> a カリー化 関数は複数の引数を取りうるが、それを、別の形で定義することも…
Haskell環境の準備 StackというHaskellのコンパイル制御ツールを使って、特定のパッケージを使う環境を整えると、『その環境のための』ghciまで入る。特定のパッケージを使うわけではなく、ローカルでHaskellの何かを始めようとするときにもStackを使うと、g…
HaskellではMCMCベイズ推定をモナドで実装できるらしい その論文がこちらで、それを実装しているHaskellパッケージ monad-bayesがこちら そのパッケージのインストールは、Haskell-stackを入れてやるのがよいらしい パッケージの依存関係を調べて、入れてく…
Haskellのビルドの管理方法 Stackについての調べ物 簡単に言うと、Haskellの開発をするにあたって、プロジェクト単位で、どんな依存関係があって、どんなバージョンでうまく行ったのかを管理しよう、という発想 なので、プロジェクトを作るたびに、ローカル…
こちらの記事のソースを"test.hs"と保存して こちらにあるように コマンドラインから ghc -o test test.hs とコンパイルして ./test と実行すれば、二次元乱点座標がずらーっと標準出力される これでghciも入ったので ghci とコマンドを打てば、"stack"を使…
Linuxに導入するのは簡単 Windowsの場合は こちらからstackのインストーラを取ってきて、それを使ってstackが動くようにして こちらから git clone https://github.com/commercialhaskell/stack.git して、 cd stack と、移動した上で以下のようにビルドする…
Leftist heaps、Binomial queues、red-black trees 手続き型言語が持つデータ構造は、関数型言語に移しやすいものとそうでないものがある 移しやすい例 leftist heaps : 手続き・関数のどちらでも実装しやすい binomial queues: 関数型でやりやすい red-blac…
リスト・二分岐木 Persistence データ構造オブジェクト(の一部)をコピーして作るようなときに、元のオブジェクトは維持して、値呼び出しための番地操作によって対応すれば、元のオブジェクトも含めて、いつまでも使いまわせる。逆に言えば、書き換えはしない…
データ構造を説明する前に用語の混乱を避けるための注意をしておく An abstract data type : 型と型のために作られた関数群のことで、abstractionと呼ぶことにする An concrete realization of an abstract data type : Implementation(実装)のことを指す。…
Haskellは関数型言語。Standard MLもそう。SMLはOCalm系らしい。似ている点もあれば違う点もある(こちら)。 共通点 First-class support for algebraic datatypes (disjoint unions) Pattern matching on primitive and custom values Arbitrarily higher or…
関数型プログラミングによるデータ構造の扱いを知るためにSML使用者が書いた本を眺めてみる。ハスケルコードも付録についている Purely Functional Data Structures作者: Chris Okasaki出版社/メーカー: Cambridge University Press発売日: 1999/07/01メディ…
この本は、各章がモジュールになっている hugsを使うことを前提として書いてある(このブログはghciを使っている。ずっと続けられるか、どこかでうまくいかなくなるかは、おいおいわかるはず) Exercise 1.3 以下をprime.hsというファイルで保存 divides d n =…
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…
整数係数多項式 多項式も代数的には「数」なので、自然数・有理数・実数・無理数・複素数の流れで定義拡張できる