Skip to content

Commit 1ea2e8e

Browse files
authored
Update computation_expressions.md
1 parent 5ee7d71 commit 1ea2e8e

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

_snippets/computation_expressions.md

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,12 @@ excerpt_separator: <!--more-->
55
code: |
66
// Define a custom computation expression for validation
77
type ValidationBuilder() =
8-
member _.Bind(x, f) =
8+
member _.Bind(x, f) = // Defines "let!"
99
match x with
1010
| Ok value -> f value
1111
| Error e -> Error e
12-
member _.Return(x) = Ok x
13-
member _.ReturnFrom(x) = x
14-
12+
member _.Return(x) = Ok x // Defines "return"
13+
member _.ReturnFrom(x) = x // Defines "return!"
1514
let validate = ValidationBuilder()
1615
1716
type Person = { Name: string; Age: int }
@@ -22,11 +21,14 @@ code: |
2221
if age >= 0 && age < 150 then Ok age
2322
else Error "Age must be between 0 and 150"
2423
25-
let! validName =
24+
let! nonEmptyName =
2625
if String.length name > 0 then Ok name
2726
else Error "Name cannot be empty"
2827
29-
return { Name = validName; Age = validAge }
28+
if String.length name > 100 then
29+
return! Error "Name is too long!"
30+
else
31+
return { Name = nonEmptyName; Age = validAge }
3032
}
3133
---
3234
## Clean Code with Computation Expressions

0 commit comments

Comments
 (0)