タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

scalaとtypeに関するemonkakのブックマーク (4)

  • さらなる型安全性を求めて ~ Refinement TypeをScalaで実現する ~

    SoRの性質が強いBtoBアプリケーションでは、「堅く」作ることを求められる箇所がしばしばあります。 Scalaの型安全性が頼もしく感じられるのは、まさにこのような箇所においてです。 「堅く」作るために、私たちがいま注目しているのが refined と newtype というライブラリです。 この記事では、refinedとnewtypeを使ってScalaの型安全性をさらに引き出すテクニックを紹介します。 Value Class / Tagged Type refined + newtypeの話題に入る前に、これまでにどのようなテクニックが使われてきたかを簡単に振り返りましょう。 ここに、SNSのユーザーアカウントを表現するクラスがあります。 case class User(id: String, email: String, age: Int) val user1 = User("@tod

    さらなる型安全性を求めて ~ Refinement TypeをScalaで実現する ~
  • Typeclassopediaに足りない型クラス - xuwei-k's blog

    挙げようと思えばいくらでも挙げられるとは思うけれど、とりあえず自分が思ったものをいくつか挙げておきます。 Typeclassopediaという型クラスを色々紹介した有名な素晴らしいやつがあるのですが、それ少し古いし、もうちょっと紹介してもいいような型クラスが触れられてないぞ?というのを前から思っていたので、それを簡単に書いてみるという話。 https://wiki.haskell.org/Typeclassopedia http://snak.tdiary.net/20091020.html 今回挙げてないのが重要でない、これ以外知らない、というわけではなく、あくまでもなんとなくな基準です。 (好評だったら、続編を書く? or 他の人が書いてくれてもいい?) 以前こんなtweetしたけど、まぁやってくれそうな人いないし、言い出しっぺの法則ということで。 「typeclassopediaに載

    Typeclassopediaに足りない型クラス - xuwei-k's blog
  • Scalaで型レベル”だけ”でクイックソート | POSTD

    Scalaの型システムが先進的であることは、皆さんもご存じのことかと思います。この投稿では、Scalaの型システムのみを使った クイックソート アルゴリズムの実装方法をご紹介したいと思います。なお、ここで紹介するデモの完全なコードは こちら をご覧ください。 自然数 まずは準備から。ソートアルゴリズムを実装するには、ソートする対象が必要ですよね。ここでは自然数を用います。もちろん、Scalaの型システムには利用可能な自然数はありません。そんなわけで、全ての自然数の型を作る必要があります。 型を無限に作るというのは、恐らく時間の浪費になるでしょうから、ここはもう少し賢い手を考えます。そう、数学を使いましょう。 ペアノの公理 ペアノの公理とは、自然数を形式的に定義するためのシンプルな方法のことです。 0 は特別なものとする。 0 は自然数である。 全ての自然数 n には、それに続くもう1つ別の

    Scalaで型レベル”だけ”でクイックソート | POSTD
  • Scalaで型レベルのラムダ計算 - 貳佰伍拾陸夜日記

    新しい言語をさわったらとりあえずラムダ計算のインタプリタを実装するよね! Scalaでふつうにラムダ計算のインタプリタを実装するのはあまりに簡単*1なので, 型レベルでやってみた. まじめな話をしておくと, C++のテンプレートがチューリング完全なのは有名な話だけど, Scalaではどうなのか気になった. 以前C++のテンプレートでラムダ計算のインタプリタを実装したのと同様のことができるか思考実験してみると, だいたいできそうに思えたのでやってみた. できたもの 例 import lambda._ case class Equals[A >: B <: B, B]() // 型レベルの同値性チェック用 type S = x ->: y ->: z ->: ( x @@ z @@ (y @@ z) ) type K = x ->: y ->: x type result = ( S @@ K

    Scalaで型レベルのラムダ計算 - 貳佰伍拾陸夜日記
  • 1