AllowAmbiguousTypes는 어디에서 사용할 수 있는 기능입니까? 구체적인 예편
이 예: ScopedTypeVariables, TypeApplications와의 조합
뭔가 전혀 잘 모르겠지만
그러고 보니 하스켈 초보자였을 무렵에 자주 GHC 서제스트된 느낌AllowAmbiguousTypes
pragma이지만,
처음으로 "너를 사용하게 해줘!"라는 장면을 만났습니다.
여기
{-# LANGUAGE AllowAmbiguousTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeApplications #-}
check :: forall a. (Group a, Eq a) => Bool
check = (empty :: a) <> empty == empty
main :: IO ()
main = do
smallCheck 2 $ check @Sum
smallCheck 2 $ check @RSum
newtype Sum = Sum
{ unSum :: Int
} deriving (Show, Eq, Num, Enum)
newtype RSum = RSum
{ unRSum :: Rational
} deriving (Show, Eq, Num, Enum)
class Monoid a => Group a where
inverse :: a -> a
instance Group Sum where
inverse = negate
instance Group RSum where
inverse = negate
instance Group () where
inverse () = ()
이게 뭐야?
최근에는 기술 서전 5에서 발표 한 "야자와 니코 선배와 함께 대수!"라는 책을 쓰고 있습니다.
기술 서전 5에 당첨되었습니다 🎉✨✨에 코쨩이 하스켈에서 수학을 가르쳐 주는 책을 냅니다! #기술서전 #기술서전5 htps // t. 코/에 v4BPQX1PT 피 c. 라고 r. 코 m / SGQt 후 pg d — 아이야🤘🙄🤘 기술 서전 5@ 또는 74 (@public_ai000ya) 2018년 8월 3일
{-# LANGUAGE AllowAmbiguousTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeApplications #-}
check :: forall a. (Group a, Eq a) => Bool
check = (empty :: a) <> empty == empty
main :: IO ()
main = do
smallCheck 2 $ check @Sum
smallCheck 2 $ check @RSum
newtype Sum = Sum
{ unSum :: Int
} deriving (Show, Eq, Num, Enum)
newtype RSum = RSum
{ unRSum :: Rational
} deriving (Show, Eq, Num, Enum)
class Monoid a => Group a where
inverse :: a -> a
instance Group Sum where
inverse = negate
instance Group RSum where
inverse = negate
instance Group () where
inverse () = ()
최근에는 기술 서전 5에서 발표 한 "야자와 니코 선배와 함께 대수!"라는 책을 쓰고 있습니다.
기술 서전 5에 당첨되었습니다 🎉✨✨에 코쨩이 하스켈에서 수학을 가르쳐 주는 책을 냅니다! #기술서전 #기술서전5 htps // t. 코/에 v4BPQX1PT 피 c. 라고 r. 코 m / SGQt 후 pg d — 아이야🤘🙄🤘 기술 서전 5@ 또는 74 (@public_ai000ya) 2018년 8월 3일
그룹 장을 쓰는 곳에서
"임의의 군은 e * e = e
누구?"
라는 의문에 달려 있었기 때문에,
그 확인을 한 것입니다.
check :: forall a. (Group a, Eq a) => Bool
check = (empty :: a) <> empty == empty
smallCheck 2 $ check @Sum
smallCheck 2 $ check @RSum
여기에서 a
는 인수에 나타나지 않으므로 AllowAmbiguousTypes
가 필요합니다.ScopedTypeVariables
으로 a
를 문장에서 사용.
그리고 사용측에서 그 군 인스턴스의 형태를…
인수에 관계없이 지정합니다.
인수에 의존하지 않는 곳이 AllowAmbiguousTypes
가 필요한 요점이었습니다
홍보
기술서전 5에 나온 후에는
Booth에서 전자책에서 판매할 예정입니다
기술서전 5에 당첨되었습니다 🎉✨✨
— 아이야🤘🙄🤘 기술 서전 5@ 또는 74 (@public_ai000ya) 2018년 8월 3일
니코쨩이 하스켈에서 수학을 가르쳐 주는 책을 드립니다! #기술서전 #기술서전5 htps // t. 코/에 v4BPQX1PT 피 c. 라고 r. 코 m / SGQt pg pd
<script async=""src="https://platform.twitter.com/widgets.js"/>
잘 부탁드립니다!
Reference
이 문제에 관하여(AllowAmbiguousTypes는 어디에서 사용할 수 있는 기능입니까? 구체적인 예편), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/aiya000/items/7e2efc378e9fabb1af32텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)