Cohiはあまりにマニアックすぎるので、もう少しふつうの人を狙ってHaskellぽいListライブラリを作ってみようかと思います。こんな感じで使えるやつ。 include Halu p List[1, 2, 3] # => Halu::List::[1, 2, 3] p List[] # => Halu::EmptyList::[] p(List[1, 2, 3].map2 {|h| h * 2 }) # => Halu::List::[2, 4, 6] p(List[1, 2, 3].last) # => 3 p(List[1, 2, 3].append(List[4, 5, 6])) # => Halu::List::[1, 2, 3, 4, 5, 6] p(List[1, 2, 3].filter {|h| h % 2 == 1 }) # => Halu::List::[1, 3]