Je gaat zelf een recursieve functie pow maken. Deze functie pow heeft als invoer twee getallen g en m en geeft als uitvoer gm (`g tot de macht m`). Je gebruikt de functie pow later om functies te bereken van de vorm y = ax2 + bx + c. Daarom is de functie pow goed genoeg als je voor m alleen gehele positieve getallen mag gebruiken. De functie pow heeft als uitkomst een getal dat gm weergeeft.
Run het elm programma mypow.elm in de volgende cell. Elm geeft als foutmelding dat de functie pow ontbreekt. Dat klopt want dat is nu juist de functie die jij zelf moet schrijven.
Voeg de functie pow toe na --insert your code here volgens de volgende omschijving. Pow heeft als invoer twee getallen g en m. Daarvan is g het grondtal en m de macht. Pow geeft als resultaat gm terug.
Gebruik daarbij recursie volgens dit schema:
import Html exposing (text, div, input, Attribute)
import Html exposing (beginnerProgram)
import Html.Events exposing (on, keyCode, onInput)
import Json.Decode as Json
import String exposing(..)
import List exposing(..)
import Maybe exposing(..)
checkedStringToFloat : String -> Float
checkedStringToFloat s =
Result.withDefault 0 (String.toFloat s)
listStringToListFloat : List String -> List Float
listStringToListFloat ls =
List.map checkedStringToFloat ls
powTest : String -> String
powTest s =
let
lf = listStringToListFloat (split "," s)
g =
withDefault 0 (head lf)
m =
withDefault 0 (head (withDefault [] (tail lf)))
in
toString (pow g m)
main =
beginnerProgram
{ model =
{ outputData = ""
, inputData = ""
}
, view = view
, update = update
}
view model =
div []
[ input [onKeyDown KeyDown, onInput Input] []
, div [] [ text ("Result: " ++ model.outputData) ]
]
onKeyDown : (Int -> msg) -> Html.Attribute msg
onKeyDown tagger =
on "keydown" (Json.map tagger keyCode)
type Msg
= NoOp
| KeyDown Int
| Input String
update msg model =
case msg of
NoOp ->
model
KeyDown key ->
if key == 13 then
{ model | outputData = powTest model.inputData }
else
model
Input text ->
{ model | inputData = text }
-- insert your code here
pow : Float -> Int -> Float
-- compile-code