mirror of
https://github.com/adambard/learnxinyminutes-docs.git
synced 2024-12-23 17:41:41 +00:00
Merge pull request #430 from sshine/master
[standard-ml/en-en] Removing syntax errors and fixing solve2 function
This commit is contained in:
commit
db072899ff
@ -199,17 +199,17 @@ val hmm = answer "What is the meaning of life, the universe and everything?"
|
||||
|
||||
(* Functions can take several arguments by taking one tuples as argument: *)
|
||||
fun solve2 (a : real, b : real, c : real) =
|
||||
( Math.sqrt (~b + Math.sqrt(b * b - 4.0*a*c) / (2.0 * a),
|
||||
Math.sqrt (~b - Math.sqrt(b * b - 4.0*a*c) / (2.0 * a) )
|
||||
( (~b + Math.sqrt(b * b - 4.0*a*c)) / (2.0 * a),
|
||||
(~b - Math.sqrt(b * b - 4.0*a*c)) / (2.0 * a) )
|
||||
|
||||
(* Sometimes, the same computation is carried out several times. It makes sense
|
||||
to save and re-use the result the first time. We can use "let-bindings": *)
|
||||
fun solve2 (a : real, b : real, c : real) =
|
||||
let val discr = b * b - 4.0*a*c
|
||||
val sqr = Math.sqrt d
|
||||
val sqr = Math.sqrt discr
|
||||
val denom = 2.0 * a
|
||||
in (~b + sq / denom,
|
||||
~b - sq / denom) end
|
||||
in ((~b + sqr) / denom,
|
||||
(~b - sqr) / denom) end
|
||||
|
||||
|
||||
(* Pattern matching is a funky part of functional programming. It is an
|
||||
@ -276,7 +276,7 @@ fun say(col) =
|
||||
fun say Red = "You are red!"
|
||||
| say Green = "You are green!"
|
||||
| say Blue = "You are blue!"
|
||||
| _ = raise Fail "Unknown color"
|
||||
| say _ = raise Fail "Unknown color"
|
||||
|
||||
|
||||
(* Here is a binary tree datatype *)
|
||||
@ -321,7 +321,7 @@ val test_poem = readPoem "roses.txt" (* gives [ "Roses are red,",
|
||||
"Violets are blue.",
|
||||
"I have a gun.",
|
||||
"Get in the van." ] *)
|
||||
~~~~
|
||||
```
|
||||
|
||||
## Further learning
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user