반응형
최상위 함수 내에 정의 된 내부 함수를 테스트하고 상호 작용하는 가장 좋은 방법은 무엇입니까?
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
반응형
'code' 카테고리의 다른 글
Docker Swarm은 볼륨 공유를 어떻게 구현합니까? (0) | 2020.11.02 |
---|---|
C # 사전 : 선언을 통해 키 대 / 소문자를 구분하지 않도록 만들기 (0) | 2020.11.02 |
const 변수가 때때로 람다에서 캡처 될 필요가없는 이유는 무엇입니까? (0) | 2020.11.02 |
자바 스크립트 개체 ID (0) | 2020.11.02 |
인터프리터가 유지 관리하는 정수 캐시는 무엇입니까? (0) | 2020.11.02 |