함수 f1 :: a -> b -> ... -> c 및 다른 함수 f2 :: PossibleTypeClass xy ... => x -> y - > ... -> z, 런타임에 c (f1의 출력)가 f2에 x 또는 y 또는 다른 입력으로 전달 될 수 있는지를 결정하고자합니다.Haskell에서 런타임에 함수 매개 변수의 호환성 확인
나는 소스를 제어 할 수 있기 때문에 런타임에 사용하기 위해 메타 데이터 (템플릿 haskell, 아마도?)를 생성하는 방법이 있다면 괜찮을 것이다. 환언
...난 입출력 세트를 가질 수 (상태 일 수 있고, 어쩌면 화살표 모양, 연산 것을 생각한다) 다수의 기능을 갖는다. 어떤 입력을 어떤 출력으로 연결하여 사용자가 서로 연결할 수 있는지 알고 싶습니다. 그런 일이 발생하면 사용자가 구성한 방법에 따라 코드 (또는 이와 비슷한 코드)를 생성 할 수 있습니다.
내가 직접 작성한 기능이나 사용자가 작성할 수있는 기능이 있으므로 컴파일 된 형식으로 가져올 수 있습니다. 그러나 매우 단순하다면 메타 데이터를 생성하기 위해 (필요한 경우) 코드의 특정 사항을 요구할 수 있습니다.
가장 큰 과제는 유형 클래스를 사용하는 것입니다. 구체적인 유형의 출력이 입력의 유형 클래스의 인스턴스인지 여부를 찾는 방법입니다.
하스켈에서 런타임시 이런 종류의 일을하는 것은 어지러운 것 같습니다. 컴파일 타임에 이것을 할 수 있도록하는 sofisticated type 시스템의 목적이 아닌가? – hugomg
물론, 런타임 이후에 컴파일 시간이 오면 어떨까요? 나는 사용자가 구성되고 함께 실행되는 구성 요소를 구성 할 수있는 무언가를 만들고 있습니다. 각자의 타입 시그니처를 기반으로 어떤 컴포넌트가 서로 연결될 수 있는지 알아야합니다. 다른 말로하면, 런타임에 타입 안전하고 컴파일 가능한 프로그램을 생성하는 방법을 알아야합니다. – mentics
ADT로 하스켈 유형을 나타내는 무언가가 필요합니까? 프로그램 자체의 코드를 분석하는 것이 아니라 컴파일되지 않은 다른 프로그램의 코드를 분석하고 싶습니까? 아마 너의 문제를 이해하지 못했을거야. – fuz