Haskell 90일 코드: 식별 기능
면책 성명
나는 보통 정의나 유사한 것으로 시작하여 가장 가까운 관계, 등가, 0, 1, 두 개 이상의 대상 간에 묘사된 어떤 상호작용을 다시 편집한 것 같다.그리고 나는 같은 단락을 갱신하고 전체 공간의 모든 용어, 단어를 갱신했다. 마치 자라는 반얀나무처럼 의미가 점점 더 큰 다태적 구조로 변했다.나는 내가 허사를 쓰는 방식에 따라 조직해야 한다는 것을 깨달았다. 왜냐하면 기능성은 기능 과정에 대한 묘사가 그 핵심에서도 여전히 기능성이라는 것을 의미하기 때문이다.
식별 편지
따라서 우리는 추상을 먼저 식별할 것이다. 예를 들어
type identity a
의 최소 상호작용 정도처럼 식별하기 위해 하나의 사물을 간단하게 명명하고 추상은 보통 무명을 유지한다. 호흡과 이해의 깊이가 성숙될 때까지 표면에 나타나서 우리가 명명한 형상을 바꾸는 유형류, 대상류, 변환, 태사, 함수,Functor
는 Functor
유형의 실례의 짝짓기 실현이고 실례는 모든 실례의 편지집의 자집으로 실현된다.그러나 나는 이것이 잘못된 것이라고 생각한다. 왜냐하면 편지는 하나의 집합 이론항이 아니기 때문이다. 편지는 일종의 관계를 암시하고 대상 간, 대상 그룹 간의 관계만 묘사했기 때문이다.명칭Functor
은 추상적인 수학에서 왔고 범주 이론에서 왔다. 그 중에서 범주는 구조를 가진 대상의 집합이고 구조는 화살표로 표시하여 대상을 이러한 태사의 실례로 만들고 다시 화살표로 서로 관련된 대상으로 표시한다.당신은 어떻게 태사나 시공 중의 어떤 동작을 나타낼 수 있습니까?이것은 표량과 같습니까? 두 개의 더욱 구체적인 사물 간의 함수, 예를 들어 운동 물체의 속도를 나타냅니까?함수 자체는 f
, 생성기, 창설자로 표시하거나 적당한 용어로 함수f
를 구성하고 구조 함수는 유형류의 이름 뒤에 직접 설명한다.이렇게class Functor f where
이것은 편지의 일반적인 정의이다. 마치 항등식처럼 우리는 심지어 변환된 위치를 모르고 편지 함수만 알고 우리는 그것이 어떤 공간에서 운행한다고 생각한다Functor f
.그렇다면 f
어떻게 만들었을까?fmap :: (a -> b) -> f a -> f b
우리의 공태사f
는 여전히 정의되지 않은 태사이다. 일부function = undefined
나 action = unknown
와 같다. 그래서 우리가 해야 할 첫 번째 일은 우리 자신의 태사를 응용하는 것이다. 우리가 시작할 때 스스로 배운 태사, 동일한 태사, 유일하게 한 대상에서 자신의 화살표로 가는 것이다.우리는 이를 typeclassclass Functor Identity where
의 실례라고 부른다fmap :: (a -> b) -> Identity a -> Identity b
우리는 Functor f
라는 특정한 신분은 시간과 공간상의 변수 점위부호이고, 다른 이름을 저장하는 미니 추상, a
류의 실례가 여기서 다른 이름Functor
의 신분에 비친다는 것을 깨달았다.그러나 신분은 b
에서 a -> a
까지의 함수 아닙니까?여기에는 어떤 등가 관계가 존재한다. 왜냐하면 우리도 Identity :: a -> a
또는Identity :: b -> b
을 쓸 수 있기 때문이다. 그것은 여전히 변하지 않는다. 이것은 미지의 관계가 여전히 변하지 않는다는 것을 의미한다. Identity : program -> program
전환 과정에서 아무런 변화가 없다. 그렇지 않으면 우리가 정확한 것을 얻었다는 것을 어떻게 알 수 있겠는가?첫 번째보다 더 큰 하나a -> a
를 얻으면 해결할 수 없는 임의성을 구성할 수 있을까? 어떤 서열의 첫 번째 단계로서 하나의 동작이 우리를 정지 상태에 빠뜨릴 수 있을까?여기서 무엇이 다른지 주의해야 할 것은 우리가 순서대로 유형을 정렬하는 것이 아니라 더 많은 함수를 응용하여 더욱 순수한 상태를 정의에 전달하기 시작했기 때문이다.우선, 우리는 거의 멀리서 보는 하나의 보기와 같다. a
. 그리고 우리는 가까워졌다. 우리는 차원 단계를 하나 높였다. 즉, 우리는 유일한 함수로 추상적인 단계를 비추었다. 예를 들어 a -> a
, 우리는 그것을 a -> a
라고 명명했지만 왜 f :: a -> a
라고 하지 않았을까?왜냐하면 우리는 Functor :: a -> b
과Functor :: a -> a
가 어떤 차이가 있는지 어떻게 증명합니까?우리는 이것이 알파 등가라고 불릴 수 있다는 것을 다시 한 번 보았다. 이상하지만 뚜렷한 전환이다. 그 중 어떤 것들은 변화가 일어난 것 같지만 우리는 변하지 않는다. 적어도 현재 우리는 여전히 비교적 낮은 추상적인 평면에 처해 있다.그런데 유형 구조 함수 자체가 유형인가요?아니오, 이것은 대칭성을 파괴하기 때문에 이 자체가 로소가 묘사한 유명한 역설인'자체 집합'의 한 예가 아닐까요?왜?구조 함수에 표지가 있습니까?함수 applicationassociates가 오른쪽에 있고 applicationassociates가 왼쪽에 있음을 입력했습니다.
Wikipedia says, "In type theory, a kind is the type of a type constructor or, less commonly, the type of a higher-order type operator. A kind system is essentially a simply typed lambda calculus 'one level up,' endowed with a primitive type, denoted * and called 'type', which is the kind of any (monomorphic) data type."
흥미로운 것은 여러 가지 유형이 함수 유형과 같다는 것을 깨달았다는 것이다.그러나 우리가 이 두 차원 간의 차이를 어떻게 인식하는지, 더욱 정확하게 말하면 이 두 차원은 유형화된 것이다. 그렇지 않으면 우리는 이 두 추상을 명확하게 구분할 수 없다.우리는 거의 그 역방향 공정을 적당한 유형으로 할 수 있다. 글자 수수께끼처럼 우리는 유형의 이동만 볼 수 있지만 변수명은 없다. 왜냐하면 일부 무작위 여수
Functor
에서 식별Identity
하더라도 우리를 추상에서 응용 분야로 밀어붙일 수 있기 때문이다.Int :: *
Maybe :: * -> *
Maybe Bool :: *
a -> a :: *
[] :: * -> *
(->) :: * -> * -> *
Damn, I just love Haskell. Do you?
Haskell에서 기본 형식급 프로그래밍을 참조하여 형식 함수, 유형에서 하나의 유형 흐름에 대한 명확한 설명을 얻으십시오.나 자신도 결국 직감으로 이 문장을 이해할 수 있다.
https://www.parsonsmatt.org/2017/04/26/basic_type_level_programming_in_haskell.html
Reference
이 문제에 관하여(Haskell 90일 코드: 식별 기능), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/dooygoy/90-days-of-code-with-haskell-identifying-functoriality-43ol텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)