金融工学の計算(1)〜ディスカウントファクター(DF):Haskell編その1
年のDFは、 リスクフリー金利を とすると、
と表せます。
また、Rubyでその内容を表すと、
df.rb
def df(r, t) 1 / (1 + r) ** t end
となります。
そのテストは、前回の丸めるメソッドを使うと、
df_test.rb
require 'test/unit' require 'df' require 'util' class DfTest < Test::Unit::TestCase def test_df assert_equal(1, df(0.1, 0)) # 現在のDFは1となるはず assert_equal(0.990099009.round_to(8), df(0.01, 1).round_to(8)) # ここが新しい end end
と、修正できます。
それでは、今回はHaskellで、このDFを表す式を書いてみましょう。
Haskellの処理系GHCのインストール方法は、このエントリーを参考にしてください。
・・・と、簡単にこのくらいの式書けるだろう、と思ったんですが、コマンドラインから引数を取得するところではまってしまいました。。とりあえず、引数の取得は「getArgs」で取れるのはわかったので、そこまでやってみます。
df_args.hs
import System main :: IO () main = do args <- getArgs putStrLn $ concat args
実行結果はこうなりました。(とりあえずインタプリタ実行)
$ runghc df_args.hs 1.0 2.0 1.02.0
やっぱり、慣れない言語は難しいですね。少しづつ進めていきます。