再帰的にべき乗を計算したいが、途中までしかできない


haskellでべき乗計算をしたいのですが、 現在は実行結果`["8"] ["2","^",3"]`までしか計算できません。
再帰的に`["256"]`を計算できるようにどのようにすればよいでしょうか

[code]

    getLastThreeValues :: [String] -> [String]
    getLastThreeValues [x, y, z] =  beki [x, y, z]
    getLastThreeValues (_:xs) = getLastThreeValues xs
    
    beki :: [String] -> [String]
    beki [base, "^", exponent] = [show (read base ^ read exponent)]
    
    main :: IO ()
    main = do
        print $ getLastThreeValues["2","^","2","^","3"] 
    
[/code]




質問者さんが最終的にやりたいことと合致しているかどうかわかりませんが、以下のように書くことはできます。

[code]

    beki :: [String] -> [String]
    beki [x] = [x]
    beki (base : "^" : exponent) = [show (read base ^ (read $ head $ beki exponent))]
    
    main :: IO ()
    main = print $ beki["2","^","2","^","3"]
    
[/code]

