higher-rank-types

    0

    3답변

    유형 정보/다운 캐스트를 다형 값으로 지우는 방법은 haskell에 있습니까? 이 예제에서는 Int 또는 Char 중 하나를 포함 할 수있는 박스형 T가 있습니다. 그리고 어떤 형식인지 모른 채이 값을 추출하는 함수를 작성하고 싶습니다. {#- LANGUAGE RankNTypes -#} data T = I Int | C Char -- This is

    2

    2답변

    과 일치하지 않습니다. RankNTypes을 사용하여 유형 변수에 의존하지 않는 유형을 정의합니다. 아래 사례를 둘러 보는 것이 올바른 방법입니까? ST s 안에 사용되는 몇 가지 기능을 정의해야합니다. 물론 s에 의존하지 않습니다. 그러나 이로 인해 두 개의 Int이 적용된 Exp이라는 표현이 Block이되지 않는 문제가 발생합니다. 왜? I로이 Coul

    4

    1답변

    DataKinds 승격 페어를 통해 두 가지 유형을 취하는 형식 생성자 f가 있다고 가정합니다. forall (f :: (ka, kb) -> *) 나는 다음 forall 정량을위한 curry처럼 함수 forward, 구현할 수 있습니다 forward :: forall (f :: (ka, kb) -> *). (forall (ab :: (ka,

    4

    1답변

    형식이없는 언어에서도 가능하지만 반복 증분으로 추가를 정의하는 방법을 찾을 수 없습니다. 여기 내 코드입니다 : 내가 add2 얻을 {-# LANGUAGE RankNTypes #-} type Church = forall a . (a -> a) -> (a -> a) zero :: Church zero = \f -> id inc :: Church -

    5

    1답변

    하스켈에서 교회 숫자를 연구하려고하는데 자연수 인 n은 기본적으로 다음 유형의 함수를 다음과 같은 값으로 적용하는 표현식입니다. n 번에 t을 입력하십시오. 내가 지수를 정의 할 때 zero :: Nat zero = \f t -> t succ :: Nat -> Nat succ n = \f -> f . (n f) plus :: Nat -> Nat

    29

    1답변

    에 순위-N 정량을하는 난 단지 다소 서투른 방법으로 이드리스 0.9.12에서 순위-N 유형을 수행 할 수 있습니다 이드리스 구문 분석 발생하기 때문에 tupleId : ((a : Type) -> a -> a) -> (a, b) -> (a, b) tupleId f (a, b) = (f _ a, f _ b) 내가, 유형 응용 프로그램있을 때마다 밑줄이

    5

    1답변

    를 사용하면 코드입니다 : {-# LANGUAGE RankNTypes, FlexibleContexts, ScopedTypeVariables #-} module Foo where import Data.Vector.Generic.Mutable as M import Data.Vector.Generic as V import Control.Monad.ST

    2

    1답변

    특정 값이 사용자 지정 모나드에서 벗어날 수 없도록 ST 2 단계 다형성 트릭을 다시 만들려고합니다. data STLike s a = STLike a class Box box where runBox :: box a -> a run :: Box box => (forall s. Eq (box (STLike s a)) => box (STLike s

    2

    1답변

    아래의 유형 확인을 수행하지 않는 이유는 무엇입니까? _ 유형은 Double로 유추됩니다. {-# LANGUAGE ScopedTypeVariables, Rank2Types #-} module Main (main) where data D a = D a main = let n = D (1 :: forall a. (Floating a

    6

    1답변

    과 같은 형식은 Lens'이 -XImpredicativeTypes 확장자 (실제로 GHC에서 지원되지 않음)가없는 형식 생성자로 래핑 할 수없는 순위 2 형식이기 때문에 작동하지 않습니다. 도덕적 가능성이 통과 계속 foo' :: ∀ y . A -> (Lens' B C -> y) -> Maybe y 에 Maybe을 연기하는 것 foo :: A -> Ma