Elm 获取一个Maybe而不是数组';s值

Elm 获取一个Maybe而不是数组';s值,elm,Elm,刚来到elm,一开始我对这种挑剔语言的来龙去脉一无所知,这让我简直快疯了(即使在读了很多关于它的文章之后,因为它太不一样了,太挑剔了……我想这就是功能性语言的本质了),所以当你尝试做一件简单的事情时,一开始就像在拉扯头发一样 我得到以下错误: The right side of (==) is causing a type mismatch. 29| get 0 arrayOfValues == 'X' ^^^

刚来到elm,一开始我对这种挑剔语言的来龙去脉一无所知,这让我简直快疯了(即使在读了很多关于它的文章之后,因为它太不一样了,太挑剔了……我想这就是功能性语言的本质了),所以当你尝试做一件简单的事情时,一开始就像在拉扯头发一样

我得到以下错误:

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.
测试:

现在我假设但不确定,当尝试从数组中提取第一个值时,它什么也得不到,但不确定。也许我猜Char什么也没回来?donno,可能还有其他问题


我想让上面的代码正常工作,然后重构..我相信可能有一种更优雅的方法来编写我上面的代码,但首先要做的是,修复这个错误,并更好地理解现有代码。对于如何处理和处理什么,nice的错误消息对我来说并不明显。我有一些假设,但不完全确定如何处理引起问题的任何行为。

数组。get
返回一个包装在
中的值,可能是因为数组中指定的索引中可能没有值。如果要检查索引0处的值是否存在且是否等于
'X'
,可以将其与
仅为'X'
进行比较:

get 0 arrayOfValues == Just 'X'

正如错误消息所说,编译器发现
==
的左侧是
可能是Char
,右侧是
Char
。您需要将一个转换为另一个才能使用
==
。在这种情况下,您可能希望按照我上面的建议更改右侧。

如果文档中的解释比语法多一点就好了。他们没有提到它发送回包装值的任何内容“就像错误消息所说的,编译器发现==的左侧是Maybe Char,右侧是Char”。是的,但是如果你还没有做过elm,那么要做的事情就不那么明显了,尤其是如果你还没有使用过,也许还有所有的sh**的话,当你阅读它的时候,在你需要在真正的代码中使用它的时候,直到你了解真正的上下文,它才那么明显。
doSomething : List Char -> Char -> Int
doSomething arrayOfValues symbol =
    let
        grid =
            fromList arrayOfValues

        found =
            get 0 arrayOfValues == symbol
    in
    if found then
        1
    else
        0
get 0 arrayOfValues == Just 'X'