Skip to content

Instantly share code, notes, and snippets.

View ikedaisuke's full-sized avatar

Ikegami Daisuke ikedaisuke

View GitHub Profile
@ikedaisuke
ikedaisuke / gist:5330979
Last active December 15, 2015 22:09
half-finished translation of tune's slides "Lens で Haskell をもっと格好良く!" it's just only half of each header of slide yet. here is the original source: http://www.slideshare.net/itsoutoftunethismymusic/ekmett-17955009

Title

A gentle introduction to write an attractive Haskell program with lens

Author

ちゅーん tune

Date

@ikedaisuke
ikedaisuke / gist:5335869
Last active December 15, 2015 22:49
すごい Haskell 読書会 in 大阪 #8 における課題です。

すごいHaskell読書会 in 大阪 #8 課題

提出者 いけがみ @ikegami__

変更:ネタバレはよくないことに気がついたので、当初書いていたいくつかの問題は削除します。

Haskell code golf に挑戦しよう!

Code golf とは、与えられた仕様を満たす、できるだけ短いプログラムをつくることです。言語はなんでもよいのですが、今回はすごい Haskell を使いましょう。

プログラムを書いたファイルを Foo.hs としたとき、Unix ならば

Haskell golf @ すごいHaskell読書会in大阪 8th meeting

2013-05-09

@ikegami__

問題

前回の出題にある通りです。

あらためて書くと、標準入力から与えられる文字列のなかに文字@が何回現れるかを数えてその個数を標準出力せよ、という問題でした。

@ikedaisuke
ikedaisuke / gist:6748225
Created September 29, 2013 00:58
グラフ理論の教科書、というよりは、僕の好きな本の中でグラフのことが書いてある本一覧
<html>
<p>
良い本、普通の本は他の人が挙げると思うので、他の人が挙げなさそうなものをできるだけ選んでみます。
</p>
<hr><pre>
Bernhard Korte and Jens Vygen,
"Combinatorial Optimization, theory and algorithms",
Springer
</pre>
<p>
@ikedaisuke
ikedaisuke / gist:6853730
Created October 6, 2013 12:54
"^a$z" は数万回テスト回したんですが見つけられませんでした…犬も歩けば棒にあたる式テストで反例を探しています。正規表現に関する知識は一切実装していません。
-- a lightweight pxeger with QuickCheck2 in Haskell
-- usage:
-- 1) find an example which satisfies the regex "a":
-- ghci> check (mkRegex "a")
-- *** Failed! Falsifiable (after 50 tests and 5 shrinks):
-- "a"
-- check tries at most 100 tests. here, we found within 50 tests.
-- 2) search more instances with the regex "a.b"
-- ghci> checkDeep 1000 (mkRegex "a.b")
-- *** Failed! Falsifiable (after 316 tests and 7 shrinks):
-- http://atnd.org/events/46727
-- https://gist.github.com/cojna/0918920c7a246961227b
import Control.Monad.State
import qualified Data.Map as M
type Memo = M.Map Int Integer
add :: Int -> Integer -> State Memo ()
add k v = do s <- get
@ikedaisuke
ikedaisuke / protocol.jpg
Last active August 29, 2015 13:55
りりろじさんの「よくわかる(かもしれない)トークン問題」を Spin にやってもらいました

説明はあとで(適当に)します。 このファイルを protocol.pml という名前で保存して、次の手順を踏みます:

> spin -a protocol.pml
> gcc pan.c
> ./a.out
> spin -M -t protocol.pml

以上で protocol.pml.ps という PostScript ファイルができあがります。

@ikedaisuke
ikedaisuke / rose.png
Last active August 29, 2015 14:14
generic rose tree とは
Ruby の Array は関数型プログラミングの List とは違います。
が、Ruby 1.8.7 以上で Enumerable は大きく変わりました。
その結果、関数型プログラミングの文脈における List のかなりのことが、
短いプログラム断片で書けるようになったと理解しています。
関数型プログラミングでは、さらに List を抽象化できます。
その一つが Rose tree [Bird 1998] です。
Ruby でも、このような抽象化があれば役にたつと思います。
@ikedaisuke
ikedaisuke / gist:fc5a93562286d37301c9
Last active August 29, 2015 14:23
Current Trends on Gröbner Bases 関連文書まとめ
# Current Trends on Gröbner Bases 関連文書まとめ
The 8th Mathematical Society of Japan Seasonal Institute
Current Trends on Gröbner Bases
— The 50th Anniversary of Gröbner Bases —
July 1 - July 10, 2015
http://www.math.sci.osaka-u.ac.jp/~msj-si-2015/index.html
@ikedaisuke
ikedaisuke / gist:9a2445879612de12239c
Last active August 29, 2015 14:25
プログラミング言語の基礎概念 p.4 導出システム Nat
; try the following code at http://rise4fun.com/z3/tutorial
; data type Nat
(declare-datatypes () ((Nat zero (succ (pred Nat)))))
; plus as a rule
(declare-fun plus (Nat Nat Nat) Bool)
; rule P-Zero
(assert (forall ((n Nat)) (plus zero n n)))
; rule P-succ
(assert (forall ((m Nat) (n Nat) (r Nat))
(=> (plus m n r) (plus (succ m) n (succ r)))))