Programmingが,実際どれほど使い物になるかを実例とともに紹介していきます。前回取り上げた実例は,複素数(complexnumbers)の実装,swift-complexでした。記事にはこうあります。Systemを書くことになったきっかけです(図1)。swift-pons使い方は簡単。Playgroundの実例が実際に動くようになります。試しに(1...100).reduce(BigInt(1),combine:*)と打ってみてください。2もちろんREPLでも動きます。PONSしてから(1...100).reduce(BigInt(1),combine:*).descriptionとか打ってみてください。3読者ご自身のプロジェクトで使いたい場合も,Frameworkをコピーしてもよし,ソースファイルをコピーしてもよしです。これで,次のようなことができます。RubyやPythonやHaskellではおなじみの任意精度整数(BigInt)が,GMPなどの外部ライブラリなしで使えるようになります。→素数判定メソッドも付いてきます。いや,同じく任意精度整数が組込みのPerl6にも組込みだったので。有理数型(Rational)もついてきます。分子と分母の型を引数とする総称型ですので,もちろん任意精度有理数=Rational<BigInt>も使えます。(BigFloat)もついています。BigRatだけでも好きなだけ小さな数も実現されているのですが,より高速かつ省スペースです。functions)の実装も付いてきます。Float128とか,新たな数値型を実装したときにexpやlogやsinやcosを書き直す必要はありません。実際BigRatとBigloatはそれぞれまったく別の型なのに,これらの関数のソースは共通です。PONSの本当のウリはそこじゃないんです。1つで十分ですよ,わかってくださいよ!古のCの時代,同じことをするコードは,型ごとに必要でした。double用にcoslと,標準で用意されているだけで3種類もあります。cosine)に取られちゃってますよ?ぶっちゃけ付き合ってられませんよね?Swiftは,はじめからこの問題にある程度対処されています。Darwin#endifされた状態でXcodeにてcosと打つと......,図2のように,DoubleもFloatもCGFloatも,どれも同じcosで呼び出せることがわかります。&#125;だが断る!だがしかし,Swiftには総称型があります。