9
내 코드의 일부 로컬 함수에 형식 시그니처를 추가하고 싶습니다. 그러나, 그들의 유형은 익명의, 실존 적으로 바운드 된 유형 변수를 포함합니다. 그들은 익명이기 때문에 형식 서명을 쓰는 법을 모르겠습니다. 어떻게 이러한 유형 변수를 참조 할 수 있습니까? 다음 예에서 실존 형 변수를 참조하면
,go
는
b
패턴 매치
T (x_shared:xs) g
구속 종류이다
[b] -> Int -> Int
를 입력 갖는다. 어떤 형식의 서명을 쓸 수 있습니까?
data T = forall a. T [a] (a -> a -> Int)
f :: T -> Int
f (T (x_shared:xs) g) = go xs 0
where
-- go :: what type?
go (x:xs) n = go xs $! n + g x_shared x
go [] n = n
당신이 유용한 mightfind : http://stackoverflow.com/questions/13828602/outer-bound-type-declarations-without-scopedtypevariables –