PureScript - 使用 fromMaybe 从 Number 获取整数
PureScript - Integer from Number using fromMaybe
考虑以下 PureScript 代码,它试图将数字转换为整数。
module Main where
import Prelude (discard, Unit)
import Prelude (($))
import Data.Int ( toStringAs, fromNumber, decimal )
import Data.Maybe ( fromMaybe )
myNumber :: Number
myNumber = 4.762
myInteger :: Int
myInteger = fromMaybe (0 $ (fromNumber myNumber))
但是此代码会产生以下错误,
Could not match type
Int
with type
t0 -> t1
不确定如何在这里正确使用 fromMaybe,因为这个用例似乎还没有记录。
所以问题是,
将数字转换为整数的正确语法是什么?
不是 100% 清楚您要做什么,但看起来您有一套额外的括号。
myInteger = fromMaybe (0 $ (fromNumber myNumber))
^ ^
| |
these two are detrimental
这两个括号里面的表达式是:
0 $ (...)
如果您查看 the definition or the docs 中的 $
运算符,您会发现它的左参数应该是一个函数。
right argument
|
v
0 $ (...)
^
|
left argument
但 PureScript 看到 0
(Int
类型)而不是函数。
因此它正确地抱怨:无法将类型 Int
与类型(函数类型)
匹配
我猜测你的实际意思是 (1) 尝试将 Number
转换为具有 fromNumber
的 Int
, (2) 如果失败,用 fromMaybe
.
代替零
如果您查看 definition of fromMaybe
,您会发现它有两个参数:第一个参数是默认值,第二个参数是 Maybe
值。所以你需要做的就是用这两个参数调用 fromMaybe
:
second argument
|
------------------
/ \
v v
myInteger = fromMaybe 0 (fromNumber myNumber)
^
|
first argument
我真的不明白你怎么会有写作的想法0 $ (...)
,所以我无法解决这个特别的误解,抱歉。
考虑以下 PureScript 代码,它试图将数字转换为整数。
module Main where
import Prelude (discard, Unit)
import Prelude (($))
import Data.Int ( toStringAs, fromNumber, decimal )
import Data.Maybe ( fromMaybe )
myNumber :: Number
myNumber = 4.762
myInteger :: Int
myInteger = fromMaybe (0 $ (fromNumber myNumber))
但是此代码会产生以下错误,
Could not match type
Int
with type
t0 -> t1
不确定如何在这里正确使用 fromMaybe,因为这个用例似乎还没有记录。
所以问题是, 将数字转换为整数的正确语法是什么?
不是 100% 清楚您要做什么,但看起来您有一套额外的括号。
myInteger = fromMaybe (0 $ (fromNumber myNumber))
^ ^
| |
these two are detrimental
这两个括号里面的表达式是:
0 $ (...)
如果您查看 the definition or the docs 中的 $
运算符,您会发现它的左参数应该是一个函数。
right argument
|
v
0 $ (...)
^
|
left argument
但 PureScript 看到 0
(Int
类型)而不是函数。
因此它正确地抱怨:无法将类型 Int
与类型(函数类型)
我猜测你的实际意思是 (1) 尝试将 Number
转换为具有 fromNumber
的 Int
, (2) 如果失败,用 fromMaybe
.
如果您查看 definition of fromMaybe
,您会发现它有两个参数:第一个参数是默认值,第二个参数是 Maybe
值。所以你需要做的就是用这两个参数调用 fromMaybe
:
second argument
|
------------------
/ \
v v
myInteger = fromMaybe 0 (fromNumber myNumber)
^
|
first argument
我真的不明白你怎么会有写作的想法0 $ (...)
,所以我无法解决这个特别的误解,抱歉。