GHC Haskell Extensions를 사용해야합니까?
문제
내가 Haskell을 배우면서 언어 확장 실제 생활 코드에 사용됩니다. 초보자로서, 나는 그것들을 사용하는 법을 배워야합니까, 아니면 모든 비용으로 피해야합니까? 나는 그것이 Haskell 98과의 호환성을 깨뜨리고 코드를 거의 GHC로만 제한한다는 것을 알 수 있습니다. 그러나 Hackage에서 패키지를 탐색하면 대부분의 사람들은 GHC 전용이라는 것을 알 수 있습니다.
그렇다면 언어 확장을 사용하는 것에 대한 공동체의 태도는 무엇입니까?
그리고 확장을 사용하는 경우, "안전하게"사용할 수있는 확장을 어떻게 구별 할 수 있습니까? 예를 들어, 나는 그것을 생각합니다 -XDISAMBIGUATERECORDFIELDS 훌륭하고 유용하지만 앞으로 지원 될 가능성이 있습니까?
해결책
없이 살기에는 너무 좋은 GHC 확장이 있습니다. 내가 가장 좋아하는 것 중에는
- 다가구계 유형 클래스
- 스코프 형 유형 변수
- 더 높은 순위 유형
- 일반화 된 대수 데이터 유형 (GADTS)
이 중 정말로 필수적인 것은 다가가계 유형 클래스입니다.
일부 GHC 확장은 매우 투기적이고 실험적이며주의해서 사용할 수 있습니다. 안정적이고 신뢰할 수있는 확장을 식별하는 좋은 방법은 그것이 포함 될 예정인지 확인하는 것입니다. Haskell Prime, 후계자 인 Haskell 98이되기를 희망합니다.
두 번째 Don Stewart의 제안은 모든 연장이 다음을 사용하여 표시되어야한다는 제안 LANGUAGE
소스 파일의 Pragma. 하지 않다 명령 줄 옵션을 사용하여 확장자를 활성화합니다.
다른 팁
예, 연장을 적절하게 사용하십시오.
그러나 그들을 활성화하십시오 의도적으로 - 당신이 그들을 필요로 할 때만. 이를 통해 모듈 별로이 작업을 수행하십시오 {-# LANGUAGE Rank2Types #-}
(예를 들어).
일반적으로 말하는 사람들은 GHC 확장을 매우 많이 사용합니다. 왜냐하면 그들은 매우 유용하고 Haskell 98은 상당히 오래 되었기 때문입니다. 최신의 표준 사람들이 더 많은 사람들이이를 고수하기 위해 더 많은 노력을 기울일 수 있습니다.
다음 표준에 대한 제안 상태를 찾을 수 있습니다. 여기.
여기서 다른 답변은 좋은 답변입니다. GHC가 가장 인기있는 Haskell 컴파일러 인 것처럼 보이기 때문에 GHC 확장은 미래의 비판적이지 않다고 덧붙일 것입니다.
(*) "미래 방지"와 반대되는 것처럼