blob: 0150cda8dcbe4cc9823f48c0ac791820a9f4709c (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
type
TMaybe[T] = object
case empty: bool
of false: value: T
else: nil
proc Just*[T](val: T): TMaybe[T] =
result.empty = false
result.value = val
proc Nothing[T](): TMaybe[T] =
result.empty = true
proc safeReadLine(): TMaybe[string] =
var r = stdin.readLine()
if r == "": return Nothing[string]()
else: return Just(r)
when isMainModule:
var Test = Just("Test")
echo(Test.value)
var mSomething = safeReadLine()
echo(mSomething.value)
|