syntax - nested let and if statements -


i having issues understanding sml's syntax nested lets , ifs. example, why syntactically ill-formed?

fun stuff =   let       val p = 2   in       if = 1             let            val r = p        in           = r       end       else       0   end 

if a 1 make a equal tor, if a not 1, not create r in first place , return 0. kinda stupid, o well...

so, why syntactically incorrect?

it not syntactically incorrect. type error.

the problem both branches of if need have same type, whereas then-branch has type bool (a = b comparison, not assignment, if assignment, it'd have type unit, wrong type) , else-branch has type int. can make code compile returning boolean in else branch this:

fun stuff =   let     val p = 2   in     if = 1           let          val r = p        in         = r       end     else       false   end 

ps: note can assign refs in sml, if wanted assign a in code, you'd need make int ref rather plain int.


Comments

Popular posts from this blog

html - Styling progress bar with inline style -

java - Oracle Sql developer error: could not install some modules -

How to use autoclose brackets in Jupyter notebook? -