반응형
사용자가 사용 / 피해야하는 Haskell (GHC) 확장 프로그램은 무엇입니까?
나는 GHC가 확장을 사용하라고 말한 경험이 몇 번 있었지만, 그 확장을 사용할 때 간단한 리팩터링으로 Haskell 98을 고수 할 수 있었을 때 코드를 훨씬 더 복잡하게 만들었 음을 발견했습니다. 2010 )보다 간단한 솔루션을 제공합니다.
반면에 GADT 또는 Rank2Type (드물게 RankNTypes)이 훨씬 적은 작업과 훨씬 더 깔끔한 코드를 만드는 경우도 있습니다.
일반적으로 더 나은 디자인의 가능성을 모호하게 만드는 확장은 무엇이며 일반적으로 개선되는 것은 무엇입니까? 두 가지를 모두 수행하는 일부가있는 경우 해당 확장 프로그램을 사용하기 전에 사용자가 무엇을 찾아야합니까 (원하는 솔루션이 사실인지 아닌지 확인)?
(또한 GHC Haskell 확장 프로그램을 사용해야합니까? )
도덕적으로 "좋은"확장과 도덕적으로 "나쁜"확장의 임시 목록-이것은 미학적 판단입니다!
좋은
- GADT
- 병렬 목록 이해
- 패턴 가드
- 모나드 이해
- 튜플 섹션
- 와일드 카드 기록
- 빈 데이터 decls
- 기존 유형
- 일반화 된 새로운 유형 파생
- MPTC + FD
- 유형 가족
- 명시 적 정량화
- 상위 다형성
- 어휘 범위가 지정된 tyvar
- 뱅 패턴
나쁜
- SQL 이해
- 암시 적 매개 변수
미운 (그러나 필요)
- 템플릿 Haskell
- Unboxed 유형 및 튜플
- 결정 불가능하고 겹치며 일관성이없는 인스턴스는 일반적으로 잘못된 설계를 의미합니다.
확실하지 않다
- 화살표 표기법
- 패턴보기
참고 URL : https://stackoverflow.com/questions/10845179/which-haskell-ghc-extensions-should-users-use-avoid
반응형
'developer tip' 카테고리의 다른 글
emplace_back ()이 균일 한 초기화를 사용하지 않는 이유는 무엇입니까? (0) | 2020.12.02 |
---|---|
Chrome 개발자 도구 콘솔이 이미지 404 오류를 기록하지 못하도록 할 수 있나요? (0) | 2020.12.02 |
C ++ 14에서 불확실한 값과 정의되지 않은 동작을 사용하는 것과 관련하여 C ++ 표준이 변경 되었습니까? (0) | 2020.12.02 |
실드 클래스를 어떻게 조롱합니까? (0) | 2020.12.02 |
PostgreSQL에서 대규모 비 차단 업데이트를 수행하려면 어떻게합니까? (0) | 2020.12.02 |