-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathprototype.elm
70 lines (48 loc) · 1.32 KB
/
prototype.elm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
module Prototype exposing (..)
import Html exposing (..)
type alias Measure =
{ value : Float
, unit : Unit
, multiplier : Multiplier
}
type Unit
= Metre
| Inch
type Multiplier
= None
| Kilo
| Mega
mymeasure1 =
{ value = 2.0, unit = Metre, multiplier = Kilo }
mymeasure2 =
{ value = 3.0, unit = Metre, multiplier = Kilo }
printmeasure result =
case result of
Ok measure ->
let
mult =
case measure.multiplier of
Kilo ->
"k"
Mega ->
"M"
None ->
""
unit =
case measure.unit of
Metre ->
"m"
Inch ->
"in"
in
text <| (toString measure.value) ++ " " ++ mult ++ unit
Err err ->
text err
summeasure : Measure -> Measure -> Result String Measure
summeasure m1 m2 =
if m1.unit == m2.unit then
Ok { value = m1.value + m2.value, unit = m1.unit, multiplier = Kilo }
else
Err "Nada de misturar banana com maca"
main =
printmeasure (summeasure mymeasure1 mymeasure2)