Standar ML - Size af en variabel (string to int)
Har en funktion der beregner en talrække om til den klassiske cæsar's kode hvilket fungere således:Man har en talrække k (f.eks: 6789) og en nøgletal n (2)
nøgletallet lægges til k i hvert ciffer og bliver til 8901
Har lavet ensml kode der regner tallet ud , hvilket virker, men funktionen skal kun køre hvis k er 8 cifre lang, samt at jeg SKAL bruge "let" eller "local" i funktionen. Her er koden:
fun caesar3 (0, n) = 0
| caesar3 (k, n) =
let val caesar3 = (( k mod 10 + n) mod 10) + caesar3(k div 10, n) * 10
in
if size(k) < 8 orelse size(k) > 8
then raise Fail "k skal vare et 8-cifret tal"
else caesar3
end;
Hvilket giver fejlmeddelsen:
line 36, characters 15-16:
! if size(k) < 8 orelse size(k) > 8
! ^
! Type clash: expression of type
! int
! cannot have type
! string
[closing file "C:/Users/Mads/AppData/Local/emacs/smltmp/sml.tmp.A392_YK"]
-
Håber nogen kan hjælpe