gpt4 book ai didi

haskell - 如何基于 if/then/else 语句定义变量

转载 作者:行者123 更新时间:2023-12-02 10:24:24 24 4
gpt4 key购买 nike

我正在尝试将一些 python 代码翻译为 haskell。然而,我已经到了不知道如何继续的地步。

if len(prod) % 2 == 0:
ss = float(1.5 * count_vowels(cust))
else:
ss = float(count_consonants(cust)) # muliplicaton by 1 is implied.

if len(cust_factors.intersection(prod_factors)) > 0:
ss *= 1.5

return ss

我尝试将其翻译为:


if odd length prod
then ss = countConsonants cust
else ss = countVowels cust
if length (cust <code>intersect</code> prod) > 0
then ss = 1.5 * ss
else Nothing<p></p>

<p>return ss</p>

但我不断收到以下错误:

parse error on input `='

对此的任何帮助或智慧之言将不胜感激。

最佳答案

不要将 Haskell 中的编程视为“如果这个,那么做那个,然后做另一件事”——按顺序做事的整个想法是必要的。您不是在检查条件然后定义变量 - 您只是计算取决于条件的结果。在函数式编程中,if 是一个表达式,变量被分配给表达式的结果,而不是在表达式内部分配。

最直接的翻译是:

let ss = if odd $ length prod
then countConsonants cust
else countVowels cust
in if length (cust `intersect` prod) > 0
then Just $ 1.5 * ss
else Nothing

关于haskell - 如何基于 if/then/else 语句定义变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3553676/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com