2025年3月29日土曜日

モナドの活用

 Haskell入門 を久しぶりに読み直してみた。P168にMaybeモナドについて少し復習してみた。

getItemWithMonad menu category name =do
  subMenu <- lookup category menu
  price <- lookup name subMenu
  return (category,name,price)

途中、Nothingを記述しなくても自動的に、該当しなければ、最後はNothingになる。うまくできていると思う。
これを、手続き型言語で、実現しようとすると条件分岐に頼らざるを得ないけど、その必要もない。
このへんが、関数型言語のモナドの強みなのかもしれない。

追記>試しに、ChatGPTで、ELMのMaybeを使うコードに変換してみた。ELMはモナドをサポートしていないため、少しコード量が増えてしまうようだ。
type alias Menu = Dict String (Dict String Float)
getItemWithMonad : Menu -> String -> String -> Result String (String, String, Float)
getItemWithMonad menu category name =
    case Dict.get category menu of
        Just subMenu ->
            case Dict.get name subMenu of
                Just price -> 
                    Ok (category, name, price)
                Nothing -> 
                    Err "Item not found"
        Nothing -> 
            Err "Category not found"

2025年3月19日水曜日

1960年代からの国債残高の増加率をグラフにしてみた。

 

 国債の増え方が話題になっているようなので、実際のところどうなのか、公式データを加工して処理してみました。この計算の仕方が、実際の増え方を表しているかどうか議論のあるところかもしれませんが、ある程度の参考にはなりそうです。
 縦軸は前年比の増加率(%)です。ちなみに、1873年 0.234億円 2024年 11053645億円ということのようなので この期間の1年あたりの平均増加率を計算すると (11053645/0.234)^(1/(2024-1873))=1.124   ということで、ほぼ12%程度です。
 1985年あたりから10%切るようになっていますね。それ以来ほとんど、(1998年以外は)平均に届いてないようです。

追加:ちなみに、近年のものですがアメリカも調べてみました。日本のように、5%切ることは少ないような感じです。


2025年3月14日金曜日

ルベーグ積分 理論と計算手法 P199

 補題9.13(2)でまた、つまづいてしまった。仕方なく、だめもとでChatGPTに頼ってみたら、きちんと回答してくれた。AIの力も凄いものだと驚きました。ここ何か月間の間にパワーアップした?

 質問は 「ルベーグファトウの定理を使い、∫A  max k≦n fk μ ≦ ν(A)  から ∫ sup n∈N  fn  μ ≦ ν(A)をいえますか?」としました。 回答に少し補足を入れてまとめてみた。

∵) gm=max k≦n fk  (これは増加列 ①)として   定理を適用すると

∫A  lim inf n→∞  gn  μ ≦ lim inf n→∞ ∫A gn μ

左辺は  ∫A sup n∈N fn μ  ②                       ↓ここで①を使う

また sup n∈N inf k≧n gn  = lim n→∞ inf gn=lim n→∞ gn  =sup n∈N fn   これが②の理由

∫A gn  μ ≦ ν(A)  で n→∞ ならば  lim inf n→∞ ∫A gn μ≦ ν(A)

ゆえに 結論  ∫A  sup n∈N fn μ ≦ ν(A)

定理に必要な優関数がないので、質問したら、優関数はf1(x)という回答。専任の家庭教師がついているような感覚になる。