by shigemk2

当面は技術的なことしか書かない

Haskell

第2期 第22回 H本読書会 in 秋葉原 #readhbon

readhbon.doorkeeper.jp do記法 doを使うパターンと使わないパターンで比べてみる。 type Birds = Int type Pole = (Birds, Birds) -- 鳥 landLeft :: Birds -> Pole -> Maybe Pole landLeft n (left, right) | abs ((left + n) - right) < 4 = Just (left +…

型変数→多相型関数

ghci> :t head head :: [a] -> a ここでいうaを型変数という。どんな型もとりうることを意味する。 型変数を用いた関数を多相型関数という。 ジェネリクスに似ているって説明があるけど、よく考えたら動的言語にそういう概念ってないよね。 独習 Scalaz — 型…

Haskellの&

どうやら関数合成をやるためのシロモノらしい。F#使いからの要望だそうな。 7.6.3 Prelude> import Data.Function Prelude Data.Function> [1,2,3] & map (+3) & filter even & Prelude.sum <interactive>:3:9: Not in scope: `&' <interactive>:3:20: Not in scope: `&' <interactive>:3:34: Not in</interactive></interactive></interactive>…

第2期 第21回 H本読書会 in 秋葉原 メモ #readhbon

readhbon.doorkeeper.jp Endo 遠藤さんではない。自分自身に返る射を持つ圏のこと。 Data.Monoid nineties.github.io 独習 Scalaz — 圏論 ドメインとコドメインが同一の対象の射を自己準同型射 (endomorphism) と呼ぶ。 http://nineties.github.io/category-…

EmacsでHaskell環境を作りたい

五番茶煎じ(当社調べ)くらいであろうやつ。 d.hatena.ne.jp sites.google.com もろもろ参考に、自分のHaskell用elispを貼っつけてみる。 (add-hook 'haskell-mode-hook 'turn-on-haskell-doc-mode) (add-hook 'haskell-mode-hook 'turn-on-haskell-indent) (…

pureなど

Prelude Control.Applicative> :i Applicative class Functor f => Applicative f where pure :: a -> f a (<*>) :: f (a -> b) -> f a -> f b (*>) :: f a -> f b -> f b (<*) :: f a -> f b -> f a -- Defined in `Control.Applicative' instance Applicat…

アプリカティブ則(Haskell)

Haskell/Applicative functors - Wikibooks, open books for an open world 「すごいHaskellたのしく学ぼう!」 11章のまとめ · GitHub アプリカティブ則のHaskellだとこうなるらしいよ。 pure id <*> v = v -- Identity pure f <*> pure x = pure (f x) -- …

第2期 第20回 H本読書会 in 秋葉原 #readhbon

第2期 第20回 H本読書会 in 秋葉原readhbon.doorkeeper.jp 前回はモノイド。今回はモナドです。 Monoid 型クラス mempty mappend mconcat モノイド則 Haskell的にはmempty mappend x = xなど モノイドとの遭遇(実際に何がモノイドなのか) リスト ProductとSu…

カインドとアリティ

カインドは型コンストラクタの型、もしくはより一般的ではないが高階型演算子の型 カインド (型理論) - Wikipedia 実際にはアリティ指定子とも言われる。 アリティ - Wikipedia なお、すごいH本には、P228に「型コンストラクタの種類」としれっと書いてある…

idとは

Haskell の id の使い方 - Block Rockin’ Codesjxck.hatenablog.com Prelude> [1,2,3] [1,2,3] Prelude> id [1,2,3] [1,2,3] Prelude> id 3 3 Prelude> :t id id :: a -> a 何かの型の値を受け取り、その値をそのまま返す という関数。そのまま。 これだけだ…

文脈 is 何

お気楽 Haskell プログラミング入門www.geocities.jp リストにはリストの意味を考えることができますし、I/O アクションもその意味を考えることができます。このようなプログラム上の意味を文脈といいますが、ここでは値を格納している型構築子のことを文脈…

持ち上げ

関数 a -> b を取って、関数 f a -> f b を返すのです。こういう操作を、関数の持ち上げ(lifting) という。 「引数を文脈に入れて返す」とも言われる。 引数が1 文脈がMaybeであればJust 1 みたいな具合。 お気楽 Haskell プログラミング入門www.geocities.j…

第2期 第19回 H本読書会 in 秋葉原 #readhbon

第2期 第19回 H本読書会 in 秋葉原readhbon.doorkeeper.jp おさらい アプリカティブの便利関数 gist.github.com モノイド typeとかnewtypeとか type(シノニム エイリアスを貼るだけ) newtype(型コンストラクタが1つだけ 中身を見ないので評価が遅延されて動…

Writerモナドで最大公約数など

モナドは「失敗系」と「状態系」の2つがある Writer モナドは、ある値 a とそれに付随する値 w から構成されていて、何らかの情報を w に書き込む操作を行う このWriterモナドを使って、ユークリッドの互除法にログを残す機能を追加したものを実装したり出来…

ピエールの綱渡りとは

ピエールの綱渡りとは、 ピエールの綱渡り - taediumの日記d.hatena.ne.jp ピエールがバランス棒を持って綱渡りしている最中、バランス棒の左右に鳥がとまる。左右の鳥の数の差が3より大きくなったらピエールは落下して綱渡りが失敗する。左右の鳥の数の差が…

第2期 第18回 H本読書会 in 秋葉原 まとめ #readhbon

第2期 第18回 H本読書会 in 秋葉原readhbon.doorkeeper.jp 前回 IOもアプリカティブファンクター 関数もアプリカティブ リストをアプリカティブファンクターにする方法は複数ある アプリカティブ則(いくつかの条件を満たさないとアプリカティブにならない) …

LYAHFGG is 何

HaskellのチュートリアルLearn You a Haskell for Great Good!の略。 Learn You a Haskell for Great Good! 独習 Scalaz — Monoid について

Haskellのパーサーなど

Parsecで四則演算パーサー - komamitsu.logkomamitsu.hatenablog.com Haskellの文法(分岐編) - あどけない話d.hatena.ne.jp BNFなど。

ZvonからHaskellのメソッドを見てみる

旧バージョン Zvon - Haskell Reference 新バージョン Haskell Reference @ZVON.orgzvon.org 言語を知るには仕様とかレファレンスとかみるのが一番だと思うの。 特に新バージョンはページ右のボックスから検索したいやつを検索してみたらいいと思うの。

Pearls of Functional Algorithm Designの電子版を購入してみるメモ

Pearls of Functional Algorithm Designwww.cambridge.org PCでコピペできる、PCで閲覧できる、デバイス間のデータの移動がしやすい、などの点からPDFが欲しかったので買いました。 54ドル。それはいいです。 PDFが単体で落とせるかなと思ったら、Adobe Digi…

HaskellのRational

Prelude> import Data.Ratio Prelude Data.Ratio> numerator (1 % 3) 1 Prelude Data.Ratio> denominator (1 % 3) 3 Prelude Data.Ratio> 1 / 3 :: Rational 1 % 3 Prelude Data.Ratio> 3 / 3 :: Rational 1 % 1 numeratorが分子 denominatorが分母 Haskell …

Haskell not equal

1 /= 1 /=はnot equal なんかこう、/=ってググラビリティが低い。 Haskell/Truth values - Wikibooks, open books for an open world

Haskellのletとラムダについて

Haskellのlet inってラムダみたいなものなのか— しげちゃん (@shigemk2) July 11, 2015 違います。 A declaration of a named variable. If the let element is the child of a rule element, the variable is calculated and scoped to the current rule an…

for-comprehensions Haskell vs Scala

リスト内包表記を、ScalaとHaskellでやってみようと思ったんです。というか、Haskellのリスト内包表記をScalaで書き直せないかなと思いました。 こういうやつ。 [(x,y) | x <- [1..9], y <- [1..9], x * y == 24] [(x+y) | x <- [1..9], y <- [1..9], x * y …

第2期 第15回 H本読書会 in 秋葉原

第2期 第15回 H本読書会 in 秋葉原readhbon.doorkeeper.jp おさらい 第9章読了、第10章読了 サンク 遅延評価の塊で、遅い→バイトストリングを使う 正格バイトストリング 遅延バイトストリング 正格版のほうが即時実行されるので、速い 逆ポーランド記法電卓(…

第2期 第14回 H本読書会 in 秋葉原 #readhbon

第2期 第14回 H本読書会 in 秋葉原readhbon.doorkeeper.jp 前回。 第2期 第13回 H本読書会 in 秋葉原 #readhbon - by shigemk2www.shigemk2.com P192-P205 9.5 ToDo リストをもっと楽しむ タスクの閲覧 追加 削除 マルチタスクリスト エラー対応(例外処理で…

第2期 第13回 H本読書会 in 秋葉原 #readhbon

第2期 第13回 H本読書会 in 秋葉原readhbon.doorkeeper.jp Random 擬似乱数について コンピュータで真の乱数を発生させるのは困難で、数の偏りが発生する 偏りなく、予想が困難で、素早く生成させる乱数を作るのは困難 擬似コード(ifが重い、6ばっかり出てく…

Haskellを書きたい人生だった #kbkz_tech

歌舞伎座.tech#8「C++初心者会」 (2015/05/17 13:30〜)kbkz.connpass.com 発表枠しかないから発表するしかなかった C++書きたくない C++でHaskellを書くしかない 結論 template 型が一部違っていても型が全部違っていても使える。 チューリング完全なのでな…

第2期 第12回 H本読書会 in 秋葉原 #readhbon

第2期 第12回 H本読書会 in 秋葉原readhbon.doorkeeper.jp 第8章 不純なものと純粋なものを分離する ここにきてHello, World Hello, World main = putStrLn "hello, world" I/O アクションどうしをまとめる gist.github.com いくつかの便利な I/O 関数 putSt…

第2期 第11回 H本読書会 in 秋葉原 #readhbon

第2期 第11回 H本読書会 in 秋葉原readhbon.doorkeeper.jp これをHaskellで Dashboard - Qualification Round 2015 - Google Code Jam 前回 第7章後半 コードや実行例はいちいち読むと時間がかかりすぎるので、飛ばして読むくらいのアレで。 ひとり1ページく…