Add fromText function to float library

This commit is contained in:
Billy Kaplan 2019-04-03 15:18:00 -04:00
parent 7ae588a10c
commit cf3b684dc2
4 changed files with 17 additions and 4 deletions

View File

@ -249,6 +249,7 @@ builtins0 = Map.fromList $
, ("Float.max", "Float -> Float -> Float")
, ("Float.min", "Float -> Float -> Float")
, ("Float.toText", "Float -> Text")
, ("Float.fromText", "Text -> Optional Float")
, ("Universal.==", "a -> a -> Boolean")

View File

@ -23,6 +23,7 @@ import Data.Text (Text)
import Data.Traversable (for)
import Data.Sequence (Seq)
import Data.Word (Word64)
import Text.Read (readMaybe)
import Unison.Runtime.IR (pattern CompilationEnv, pattern Req)
import Unison.Runtime.IR hiding (CompilationEnv, IR, Req, Value, Z)
import Unison.Symbol (Symbol)
@ -325,6 +326,8 @@ builtinCompilationEnv = CompilationEnv (builtinsMap <> IR.builtins) mempty
, mk2 "Float.max" atf atf (pure . F) max
, mk2 "Float.min" atf atf (pure . F) min
, mk1 "Float.toText" atf (pure . T) (Text.pack . show)
, mk1 "Float.fromText" att (pure . IR.maybeToOptional . fmap F) (
(\x -> readMaybe x :: Maybe Double) . Text.unpack)
, mk2 "Debug.watch" att at id (\t v -> putStrLn (Text.unpack t) *> pure v)
]

View File

@ -1,8 +1,15 @@
use Float abs max min toText
use Float abs max min toText fromText
use Optional Some None
withDefault : Optional a -> a -> a
withDefault opt d = case opt of
Some x -> x
None -> d
> (abs 1.1,
abs -1.1,
max 1.1 1.5,
min 1.1 1.5,
toText 1.1)
toText 1.1,
withDefault (fromText "1.5") -1.0,
withDefault (fromText "Hello world!") -1.0)

View File

@ -2,4 +2,6 @@
1.1,
1.5,
1.1,
"1.1")
"1.1",
1.5,
-1.0)