600000007

プログラムと折り紙のブログです。

scala

Java8のLambdaの型推論が実行時にならいと型が分からない理由(追記あり)

JJUGナイトセミナー「Inside Lambda」に参加してきました。 Java8のLambdaの概要と、実装方法についてのお話でした。 非常に面白かったのですが、その中でLambdaの型推論が実行時にならいと型が分からないという話があったのでまとめてみます。 Lambdaの型推…

Scala Conferenceスタッフやってみた(謝罪あり)

3/2(日)、Scala Conference in Japan 2013が開催されました。 私はスタッフとして準備に奔走していましたが、無事終了しほっとしております。 多くの方にご来場頂き、誠に感謝です。そんな中で、次はスタッフを手伝いたい!という声を多数聞いたので、参考…

case class B extends case class A はダメ?

case classを継承したcase classを書いていたらwarningがでました。 case class A (x:Int) case class B (override val x:Int) extends A(x)コンパイルは通るのですが・・・ [warn] there were 1 deprecation warnings; re-run with -deprecation for detail…

Scala by Example‎ > 演習9.1.1解答案

Scala by Example > 演習9.1.1の解答案です。 def isort(xs: List[Int]): List[Int] = xs match { case List() => List() case x :: xs1 => insert(x, isort(xs1)) } def insert(x: Int, xs: List[Int]): List[Int] = xs match { case List() => List(x) cas…

Scala by Example‎ > 演習7.2.2解答案

Scala by Example > 演習7.2.2の解答案です。 abstract class IntTree case object EmptyTree extends IntTree case class Node(elem: Int, left: IntTree, right: IntTree) extends IntTree def insert(t: IntTree, v: Int): IntTree = t match { case Node…

Scala by Example‎ > 演習6.0.3解答案その2

Scala by Example > 演習6.0.3の解答案その2です。ヒントその2をベースにした解答です。 あるいは3つの子クラスとして Zero を 0 に、Succ を正の数のため、Pred を負の数のために使い、既知の Nat 実装を Integer へ一般化できます ちょっと意味が分からな…

Scala by Example‎ > 演習6.0.2解答案 その1

このScala by Example‎ > 演習6.0.2のNat、Succは自然数の定義でもあるペアの公理まんまですね。 公理を限りなく数式に近い形でプログラムで表現できるのはまさに関数型ならではなのでしょうか。Succの実装がよく分からない…と思ったら、これも原文と違っち…

Scala by Example‎ > 演習6.0.2解答案

Scala by Example > 演習6.0.2の解答案です。 trait IntSet { def incl(x: Int): IntSet def contains(x: Int): Boolean def union(set: IntSet): IntSet def intersection(set: IntSet): IntSet def excl(x: Int): IntSet def isEmpty: Boolean } class Emp…

Scala by Example‎ > 演習6.0.1解答案

Scala by Example‎ > 演習6.0.1の解答案です。これも翻訳がちょっと分かりにくかったのですが、要するに和集合と積集合を求めよ、ということですね。 trait IntSet { def incl(x: Int): IntSet def contains(x: Int): Boolean def union(set: IntSet): IntSe…

Scala by Example‎ > 演習5.3.1解答案

Scala by Example‎ > 演習5.3.1の解答案です。 立方根なので、 x = y * y * y y = x / ( y * y ) を補正関数に使います。 def cube(x: Double) = fixedPoint(averageDamp(y => x / (y * y)))(1.0)

Scala by Example‎ > 演習5.2.1〜5.2.4解答案

Scala by Example‎ > 5.2 カリー化 (Currying)の演習問題の解答案です。 演習 5.2.1 この問題ですが、??を埋めてもコンパイルエラーになって変だなと思ったら、原文とちょっと違ってますね。 原文の問題 def sum(f: Int => Int)(a: Int, b: Int): Int = { de…

‎Scala by Example‎ -> 5.2 カリー化 (Currying) 詳解

‎Scala by Example‎ -> 5.2 カリー化 (Currying)にて、ちょっと悩んだところを細かく読み解いてみました。 カリー化とは? Wikipediaによると、 f( a, b ) = c という関数 f があるときに、F( a ) = g ただし、g( b ) = c という関数 g が得られる関数 F を…

Scala by Example‎ -> 演習 4.6.1の解答案

Scala by Example‎ -> 演習 4.6.1の解答を考えてみました。末尾再帰にする→ else以降が再帰関数だけになればいい→でもfactorialだけにしちゃうと合計値を引き継げない→だったらfactorialに合計値を引き継げさせればいい def factorical(x: Int) = { def iter…

Scala勉強会第69回 in 秋葉原

Scala勉強会第69回 in 秋葉原に参加しました。 テーマはiteratee。 なんとなく説明してもらった事は理解できるのですが、付いて行けてはいませんでした。 scalazのコードが読めないとちゃんと理解はできないですね。 逆に言うと課題は見えました。scalaの基…

Scala勉強会第68回 in 渋谷 参加しました。

Scala勉強会第68回 in 渋谷に参加しました。まだまだついて行けないですね…。 でも今まで関わった事の無かったプログラム言語界隈の話が聞けて楽しかったです。 そもそも皆の会話や着眼点が面白いですね。 単にプログラムの勉強というだけではなく、交流会と…