【问题标题】:How to get a variables only defined as an argument in another function in Haskell如何在Haskell的另一个函数中获取仅定义为参数的变量
【发布时间】:2019-02-28 06:19:16
【问题描述】:

我有

cubicQ a b c = ((3*a*c) - b**2)/(9 * (a**2))

我需要从中获取“a”的值,这样我就可以在另一个函数中使用它,而不必在另一个函数中将它作为参数传递。我需要使用它的功能如下:

cubicRealSolution q r s t = if p < 0 then error "NaN" else (s + t) - ((b)/(3*(a)))

【问题讨论】:

  • 这看起来像(几乎)完全复制了您两分钟前提出的问题 stackoverflow.com/questions/52484370/…
  • 您认为ab 的值会吗?你根本没有调用cubicQ,你在这样的调用中使用的任何值都是你首先在cubicRealSolution中使用的值。
  • @chepner:在链接的问题中,OP定义了q等,但并没有真正做出“功能应用”。

标签: function variables haskell arguments


【解决方案1】:

尽管这行不通,但我们会向您展示这个想法。在 Haskell 中你可以写

cubicQ a b c = ((3*a*c) - b**2)/(9 * (a**2))

    where

    cubicRealSolution q r s t = if p < 0 then error "NaN" else (s + t) - ((b)/(3*(a)))

诀窍是使用where 关键字。因为cubicRealSolution 被包裹在cubicQ 中,所以它可以访问它的参数abc 而无需传递它们。

【讨论】:

    【解决方案2】:

    抱歉,这是不可能的。如果您希望函数能够访问某个值,则必须将该值传递给该函数(并且它必须准备好接受它)。

    【讨论】:

    • 您可以使用 where 关键字将一个函数包装在另一个函数中。被包装的函数将可以访问它被包装的函数的所有参数。所以虽然这取决于具体情况,但并非不可能。
    猜你喜欢
    • 1970-01-01
    • 2018-06-09
    • 1970-01-01
    • 2014-01-22
    • 1970-01-01
    • 2011-01-18
    • 1970-01-01
    • 1970-01-01
    • 2012-08-02
    相关资源
    最近更新 更多