by shigemk2

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

Haskell

ghciのコマンド

:k 型の種類 :i 名前についての情報 :l モジュールすべてを再帰的にロード :t 型の推論 あたり GHCiのコマンド群

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

前回休みました… 第2期 第10回 H本読書会 in 秋葉原 - H本読書会(Haskell勉強会) | Doorkeeper 自動車は型引数を取るべきか? 三次元ベクトル 7.5 インスタンスの自動導出 Showすると文字列表現 人間の平等(人間に分かりやすい表現) 読み込んでクラスにでき…

HaskellのflipをScalaで書いてみたかったけど

探したらこんなのあったので、とりあえず共有しておく。俺の中で。 Is it possible to implement flip in Scala like it is implemented in Haskell? Is it possible to implement flip in Scala like it is implemented in Haskell? - Stack Overflow 引数…

適当なラムダ式

08-170006.hs ラムダと関数を組み合わせることは出来たりするけど、これをScalaに適用しようとすると、どうかなって感じはある。

haskell-modeでインデントを2から4にしたい

haskell-modeのインデントは変数1つの値を書き換えるだけじゃなくて、複数のdefcustomをどうにかしないといけないので、ちょっとつらい。 50haskell-mode.el customize-variableから、適当にインデントを2→4にしたやつをごにょごにょしてみる。

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

おさらい モジュール Haskellにはモジュールというものがあり、プログラムを分割することが出来、いくつかのプログラムをエクスポートできる モジュールのインポート 標準モジュールをインポートしてみよう ghciでもプログラムのファイルからでも可 import q…

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

第2期 第7回 H本読書会 in 秋葉原 - H本読書会(Haskell勉強会) | Doorkeeper 前回のラブライブ! embedがうまくいかないので修正しました。 http://shigemk2.hatenablog.com/entry/2015/02/04/ 5.4 ラムダ式 ラムダ式とは、1 回だけ必要な関数を作るときに使…

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

前回のおさらい 第5章 1-3 複数の引数を受け取れるかのように見えた関数は、 実はすべてカリー化された関数だったのです。 カリー化関数は、 複数の引数を取る代わりに、 常にちょうど1つの引数を取る関数です。 セクション 高階関数 標準ライブラリの再実装…

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

前回のふりかえり(第4章) 再帰 maximumの再定義 replicateの再定義 takeの再定義 reverseの再定義 repeatの再定義(そのままだと終わらないので、takeと組み合わせる) zip elem クイックソート 再帰的に考える 基底部を見極める 解くべき問題をより小さな部分…

今日やったこと #ikebin

8086の逆アセンブラは、とりあえず完成を見る。 最後の〆はSEGMENT OVERRIDE PREFIXですがそれに対応するように関数を作り直すのに少し手間取りました。 とりあえずアセンブラとはなんぞやっていう基礎の基礎の基礎の知見を得られたのはよい気づきだと思いま…

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

第3章おさらい パターンマッチ ガード asパターン where Prelude> let xs = [(1,3),(4,3)] Prelude> [a+b | (a,b) <- xs] [4,7] ガードはまたげるけどパターンマッチはまたげない let whereが文なのにたいしletは式なのでどこでも書ける 関数の構文に対して…

Scala vs Haskell リストの型

Scala 複数のデータ型を有するリストを作成することも可能。 scala> val a = List(1, 2) a: List[Int] = List(1, 2) scala> val a = List(1, "hoge") a: List[Any] = List(1, hoge) Haskell https://www.shido.info/hs/haskell4.html#list リストの要素の型…

タプルの3番目

そのままなぞっただけです。タプルの要素取得にはfstとsndがありますが、trdに相当するものはない、というお話。そもそも、要素数3つ以上のタプルでfstとかsndとかするとエラーになります。 で、要素数が3以上のタプルから要素を取り出すには独自関数を作成…

Haskellのアンボックス化タプルで乱数

dice_io.hs 7.2. 非ボックス化型とプリミティブ演算 アンボックス化タプルの使い方がよくわからないので、コードでゴニョゴニョした例その1。

replicateM vs replicateM_

replicateM - Hoogle これな、あんまりドヤ顔で間違ったこと言うとまさかり飛んでくるやつな。気をつけんとな。 import Control.Monadって書くと使える組み込み関数。 replicateM :: Monad m => Int -> m a -> m [a] base Control.Monad replicateM n act pe…

Haskellでごにょごにょしたかったやつ

Haskell のセクションと中置記法 | すぐに忘れる脳みそのためのメモ ``で中置 let hoge x y = x / y hoge 4 2 4 `hoge` 2 Haskell のリスト操作 Haskell のリスト操作 : tnomuraのブログ [1,2,3] ++ [4,5,6] 0:1:[2,3,4] [1]:2 -- これは出来ない プログラミ…

圏論の米田さん

Haskellを勉強するとなまら米田さんが出てくるので、どういうお方なのかちょっと調べてみた 米田信夫 - Wikipedia 米田の補題 - Wikipedia YonedaとCoYoneda、そしてFunctor - capriccioso String Creating(Object something){ return My.Expression(somethi…

shiftR

ひどく個人的なメモ。 Prelude> import Data.Bits Prelude Data.Bits> 64 `shiftR` 6 1 Prelude Data.Bits> 64 `shiftR` 5 2 Prelude Data.Bits> 64 `shiftR` 4 4 Prelude Data.Bits> 64 `shiftR` 3 8 Data.Bitsに定義されているやつでシフト演算できる。 M.…

とりまの進捗 #ikebin

in命令まで終わった。はず。 xchg ax,axは事実上何もしていないからnopとか、ndisasmが古すぎる機械語は逆アセンブルしてくれないからpop csは無視するとか、ジャカジャカハマるところがあった。 あと、IN命令のFixed Portが何のことなのかわからなかったり…

BrainfuckのインタプリタをHaskellで

Haskell アクション 超入門 - Qiita Haskell アクション 超入門 - Qiita BFはメモリの値を頻繁にいじるため参照透過性もクソもない言語なので、インタプリタも参照透過性なんて存在せず、副作用や状態を持たないとどうにもなりません BFの世界は参照透過性の…

ハピネスチャージハスケル

ニチアサクズ三銃士・真を連れてきたよ pic.twitter.com/zTfr6tyngE— ばつ@2日目東C44 (@batuACT3) 2014, 7月 20 初見殺し三銃士を連れてきたよ pic.twitter.com/24cGXYDfG5— Jun Inoue (@jun0inoue) 2014, 10月 10 ごめんなさい、タイトルはノリです。 Has…

型注釈についてのメモ

型注釈を書く癖をつけてみたかったけど、ちょっと戸惑ったのであった。 引数 -> 引数 -> 最後に戻り値 という流れをつかんでおきたかった。 shuffle :: [Int] -> [Int] shuffle xs = [ x * 2 | x <- xs] main = do print $ shuffle [1..9] Haskell - Wikiped…

文字列リストの連結でごにょごにょ

カンマ区切りで連結 import Data.List intercalate ", " ["ab", "cd"] 区切らないで連結 import Data.List intercalate "" ["ab", "cd"]

リスト内包表記について

リスト内包表記はリストのフィルタリング、変換、組み合わせを行う方法である。 左側でやりたいことを書いて、右側でリストを束縛(定義)する。 右側で定義した変数について、左側でやりたいことを定義する感じ。 例。 ghci>[ x*2 | x <- [1..10]] [2,4,6,8,1…

今日やったこと #ikebin

Haskellによる8086逆アセンブラ開発入門 - Qiita Haskellによる8086逆アセンブラ開発入門 - Qiita mov命令の残りを実装 disasmが命令の長さも返すように修正 複数の命令を含んだバイナリを渡すと逆アセンブル結果をリストで返す関数を実装(途中) リスト内包…

今日の8086 逆アセンブラ #ikebin

Haskellによる8086逆アセンブラ開発入門 - Qiita Haskellによる8086逆アセンブラ開発入門 - Qiita とりあえずmov命令は全部実装した。はず。 コミットにも書いたけども、Segment Register to Register/MemoryとRegister/Memory to Segment Registerのテスト…

昨日の8086逆アセンブラ #ikebin

DisAsm.2014111213.hs Haskellによる8086逆アセンブラ開発入門 - Qiita Haskellによる8086逆アセンブラ開発入門 - Qiita とりあえずmov命令の2番目Immediate to Register/Memoryを実装。 たぶんできているはず。ハンドアセンブルして逆アセンブルしてテスト…

shiftLとビット論理和

shiftLは左シフトで、.|.で論理和、というかOR。 Prelude> import Data.Bits Prelude Data.Bits> (1 `shiftL` 2) .|. (1 `shiftL` 1) 6 なお、Data.Bitsモジュールが必須。 島ぶくろ [Haskell] ビット操作、ビット演算ライブラリ Data.Bits を試してみる。 …

Haskellの再帰マージソートをdebugしてみる

再帰を利用したマージソートをHaskellで実装するというドリルをやっていたのだけれど、 【解答例】Haskell 超入門 - Qiita 【解答例】Haskell 超入門 - Qiita 途中までしか出来なかった…そもそもdropとtakeしただけで再帰のさの字も出てこない自分のクソ実装…

dropとtakeでリストの右半分と左半分を取り出す

とりあえずdropとtakeとwhereを慣らしてみる。 my-merge.2014102602.hs