後入先出
スタックを作るための土台第一弾 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でコツコツ書いていこうと企画中。
あと、ノベルゲームエンジンも少しずつ進めています笑