wvogel日記

自分用の技術備忘録が多めです.

後入先出

スタックを作るための土台第一弾 with Haskell
リストへの要素追加が可能になったので、スタックでのpushが可能です。
あとはこれを関数化していくだけですが、うまくいくだろうか
あとはpopですが、reverseとhead関数を組み合わせることで実現可能です。

k = [1,2,3,4,5]

main = do putStrLn $ unlines $ map show k
              putStrLn $ unlines $ map show (k++[4])

で、popも付け加えたのがこれ。

k = [1,2,3,4,5]

main = do putStrLn $ unlines $ map show k
              putStrLn $ unlines $ map show $ push k
              putStrLn $ show $ head $ reverse $ push k
      
push :: [Int]-> [Int]
push a = a++[4]

まあ、このままだと全く汎用性がないのでpush,pop別に関数にする必要がありますが。
素数を変更したあとのリストをどう保存するか。
今のままだと、見てわかるとおり、popしたあとも、いちいちpush kと書かないと情報が保持されません。
それが解決すればもう完成同然ですが笑

キューはもっと簡単。
スタックのpush関数が完成すれば、それにhead関数を適用するだけです。

とりあえず、今Haskellを使って作りたいもの、否、作れるものがないので、手元にある「C言語によるはじめてのアルゴリズム入門」にあるアルゴリズムHaskellでコツコツ書いていこうと企画中。
あと、ノベルゲームエンジンも少しずつ進めています笑