タグ

ブックマーク / qiita.com/taketo1024 (2)

  • Swiftで代数学入門 〜 1. 数とは何か? - Qiita

    struct f : TPPolynominal { // f(x) = x^2 - 2 in Q[x] static let value = Polynominal<Q>(-2, 0, 1) } typealias K = FieldExtension<f> // K = Q[x]/(x^2 - 2) let a = K(0, 1) // x mod (x^2 - 2) a * a // 2 mod (x^2 - 2) a * a == 2 // true! これが何のことか分からなくても、最後の1行を見てください… a * a == 2 となっています! a は自乗して 2 になる数なんだから、これは $\sqrt{2}$ そのものです。同じように虚数単位 $i$ や $1$ の原始 $n$ 乗根 $\zeta_n$ も、近似ではない「その数そのもの」をプログラムで実現できてしまうので

    Swiftで代数学入門 〜 1. 数とは何か? - Qiita
    peketamin
    peketamin 2016/03/14
  • Swift で Phantom Type (幽霊型) - Qiita

    社内の「Scala 勉強会」で Phantom Type (幽霊型) という厨二心をくすぐる感じのデザインパターンを教えてもらったので、同じことを Swift でもやってみました。 インスタンスの状態を変数ではなく 型パラメータ として持つことで、状態チェックを実行時ではなく コンパイル時 に行えるというイカしたテクニックです。 class Status{} class NotReady: Status{} class Ready: Status{} class Something<T: Status> { static func createInstance() -> Something<NotReady> { return Something<NotReady>() } func readify() -> Something<Ready> { return Something<Read

    Swift で Phantom Type (幽霊型) - Qiita
    peketamin
    peketamin 2015/11/05
  • 1