Как получить переменные, определенные только в качестве аргумента в другой функции в Haskell - PullRequest
0 голосов
/ 24 сентября 2018

У меня есть

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)))

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

Хотя это не сработает, мы представим вам это, чтобы показать идею.В 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, он может иметь доступ к своим аргументам a, b и c без необходимости их передачи.

0 голосов
/ 24 сентября 2018

Извините, это невозможно.Если вы хотите, чтобы функция имела доступ к значению, вы должны передать это значение функции (и она должна быть готова принять его).

...