code

최상위 함수 내에 정의 된 내부 함수를 테스트하고 상호 작용하는 가장 좋은 방법은 무엇입니까?

codestyles 2020. 11. 2. 07:59
반응형

최상위 함수 내에 정의 된 내부 함수를 테스트하고 상호 작용하는 가장 좋은 방법은 무엇입니까?


Javascript로 프로그래밍 할 때 디버거를 사용하여 언제든지 프로그램 실행을 중지하고 명령을 실행하고 변수를 검사 할 수 있다는 것이 매우 편리 하다는 것을 알게 되었습니다.

이제 Haskell로 돌아가서 대화 형 GHCI REPL에서 임의의 함수를 실행하는 방법이 있습니까? 아니면 최상위에서 선언 된 것으로 제한됩니까?

내부 함수 및 값을 작동하고 디버깅하는 "표준"접근 방식은 무엇입니까?


GHCi의 중단 점에서 중지되면 범위에있는 모든 항목에 액세스 할 수 있습니다. 다음과 같은 기능이 있다고 가정 해 보겠습니다.

foo :: Int -> Int
foo x = g (x + 2)
  where g y = x^y 

중단 점을 설정하고 foo호출 해 볼 수 있습니다 .

> :break foo
Breakpoint 1 activated at /tmp/Foo.hs:(2,1)-(3,17)
> foo 42
Stopped at /tmp/Foo.hs:(2,1)-(3,17)
_result :: Int = _

g 이 시점에서 아직 범위에 포함되지 않으므로 한 번만 수행해야합니다.

[/tmp/Foo.hs:(2,1)-(3,17)] > :step
Stopped at /tmp/Foo.hs:2:9-17
_result :: Int = _
g :: Integral b => b -> Int = _
x :: Int = 42

이제 g범위 내에 있으므로 최상위 함수처럼 사용할 수 있습니다.

[/tmp/Foo.hs:2:9-17] > g 2
1764
[/tmp/Foo.hs:2:9-17] > g 3
74088

참고 URL : https://stackoverflow.com/questions/9987739/what-is-the-best-way-to-test-and-interact-with-inner-functions-defined-inside-a

반응형