获取 Maybe 而不是数组的值
Getting a Maybe instead of an Array's value
这里是榆树的新手,一开始它让我非常疯狂,不知道这种挑剔的语言的来龙去脉(即使在阅读了关于它的 sh**load 之后,因为它是如此不同和挑剔......我我猜这就是函数式语言的本质)所以当你尝试做一件简单的事情时,一开始就像拉头发。
我收到以下错误:
The right side of (==) is causing a type mismatch.
29| get 0 arrayOfValues == 'X'
^^^
(==) is expecting the right side to be a:
Maybe Char
But the right side is:
Char
Hint: With operators like (==) I always check the left side first. If it seems
fine, I assume it is correct and check the right side. So the problem may be in
how the left and right arguments interact.
测试:
it "blah blah blah" <|
let
someArray =
[ 'P', ' ' ]
in
expect (MyModule.doSomething someArray 'P') to equal 1
我的模块
doSomething : List Char -> Char -> Int
doSomething arrayOfValues symbol =
let
grid =
fromList arrayOfValues
found =
get 0 arrayOfValues == symbol
in
if found then
1
else
0
现在我假设但不确定,在尝试从我的数组中提取第一个值但不确定时,它没有得到任何东西。也许我认为 Char 什么都没有返回? donno,可能还有其他问题。
我想让上面的代码工作,然后重构..我确信可能有更优雅的方法来编写我上面编写的代码,但首先要做的是修复这个错误并更好地理解它与现有代码。关于如何处理和处理什么,错误消息虽然不错,但对我来说并不那么明显。我有一些假设,但不确定如何处理导致问题的行为。
Array.get
returns 包裹在 Maybe
中的值,因为数组中的指定索引处可能不存在值。如果要检查索引 0 处的值 和 是否等于 'X'
,可以比较 Just 'X'
:
get 0 arrayOfValues == Just 'X'
如错误信息所说,编译器发现==
左边是一个Maybe Char
,右边是Char
。您需要将一个转换为另一个才能使用 ==
。在这种情况下,您可能想按照我上面的建议更改右侧。
这里是榆树的新手,一开始它让我非常疯狂,不知道这种挑剔的语言的来龙去脉(即使在阅读了关于它的 sh**load 之后,因为它是如此不同和挑剔......我我猜这就是函数式语言的本质)所以当你尝试做一件简单的事情时,一开始就像拉头发。
我收到以下错误:
The right side of (==) is causing a type mismatch.
29| get 0 arrayOfValues == 'X'
^^^
(==) is expecting the right side to be a:
Maybe Char
But the right side is:
Char
Hint: With operators like (==) I always check the left side first. If it seems
fine, I assume it is correct and check the right side. So the problem may be in
how the left and right arguments interact.
测试:
it "blah blah blah" <|
let
someArray =
[ 'P', ' ' ]
in
expect (MyModule.doSomething someArray 'P') to equal 1
我的模块
doSomething : List Char -> Char -> Int
doSomething arrayOfValues symbol =
let
grid =
fromList arrayOfValues
found =
get 0 arrayOfValues == symbol
in
if found then
1
else
0
现在我假设但不确定,在尝试从我的数组中提取第一个值但不确定时,它没有得到任何东西。也许我认为 Char 什么都没有返回? donno,可能还有其他问题。
我想让上面的代码工作,然后重构..我确信可能有更优雅的方法来编写我上面编写的代码,但首先要做的是修复这个错误并更好地理解它与现有代码。关于如何处理和处理什么,错误消息虽然不错,但对我来说并不那么明显。我有一些假设,但不确定如何处理导致问题的行为。
Array.get
returns 包裹在 Maybe
中的值,因为数组中的指定索引处可能不存在值。如果要检查索引 0 处的值 和 是否等于 'X'
,可以比较 Just 'X'
:
get 0 arrayOfValues == Just 'X'
如错误信息所说,编译器发现==
左边是一个Maybe Char
,右边是Char
。您需要将一个转换为另一个才能使用 ==
。在这种情况下,您可能想按照我上面的建议更改右侧。