하스켈의 형 추론은?(정적, 동적 모델과 비교)

이 보도에서 우리는 Haskell의 형 추론을 배웠다.
Haskell은 형 추론이라고 하는데 데이터형을 컴파일할 때 판정하고 보완하는 기능을 가지고 있다.기존의 정태형, 동태형과 비교하여 그 특징을 생각하다.

데이터 유형은 무엇입니까?


앞으로 처리될 데이터의 종류와 크기를 컴퓨터에 전달하는 메시지다.컴퓨터 메모리에 상한선이 있기 때문에 처리 데이터의 크기를 미리 지정해야 한다.

데이터 형식의 물리적 형식은 메모리 공간이다.구축된 것과 같은 메모리 공간에 10등 수치·Hello World 등의 문자열을 저장한다.

양질이 다르다


데이터의 양과 질에 따라 데이터 유형도 다르다.10비트와 1만비트의 메모리 공간이 다르고 100과 HelloWorld의 문자열도 다르다.데이터 유형은 처리 데이터의 양, 종류, 크기에 따라 구분하여 사용해야 한다.

(보충) 데이터 유형이 필요한 것은 공식 = 값


프로그램은 주로 문장과 공식으로 구성된다.여기서 주의해야 할 것은 데이터 형식을 지정하는 것은 공식(=값)이다.문장 (= 명령) 에서 데이터 형식을 지정할 수 없습니다.
■문장(명령)
컴퓨터 명령
if문,for문,while문.기다리다
글은 컴퓨터에 대한 명령이다."땡땡하자!"그렇게 생각했으면 좋겠어요.명령만 호출하는 기능이기 때문에 문장은 데이터 형식이 필요하지 않습니다.
■식(값)
반환 값의 요소(데이터 형식이 있음)
변수, 함수, 진가값, 계산 공식.기다리다
표현식은 값을 반환하는 요소입니다.공식(값)에는 일반적으로 데이터 유형이 있습니다.

모델 번호는 무엇입니까?


데이터 형식을 지정하는 방법입니다.수치가 데이터 유형을 지정하는 방법에는 주로 두 가지 방법이 있다.정적 및 동적 모델입니다.

역사의 진전


구체적인 내용에 들어가기 전에 역사의 경과를 확인한다.

조용한 시대


이전의 언어에서는 수치에 대해 데이터 형식을 미리 지정해야 하는 경우가 많았다.컴퓨터로 하여금 필요한 메모리 공간을 잘 확보하고 자신이 처리하고 싶은 데이터를 넣게 하다.이런 느낌이야.컴퓨터의 성능이 그다지 좋지 않기 때문에, 인류가 이것을 지정해야 한다.
그러나 데이터 형식을 모든 값으로 지정하는 것은 매우 번거롭다.나는 int num = 10처럼 하나하나 똑똑히 쓰는 것이 어떻다고 생각한다.또 대규모 개발이 대역이 되면서 데이터형 지정도 복잡도와 군더더기를 초래하는 원인이 됐다.

동적 정형의 시대


정적인 스타일링의 골칫거리를 극복하기 위해 등장하는 것은'역동적'이다.동적 유형은 프로그램이 수치를 가진 데이터 형식을 자동으로 지정합니다.num = 10에 "num의 데이터 형식은 int입니다."라고 적으세요.이런 자동 추측.컴퓨터의 성능이 향상되고 기술적으로도 그런 일이 가능한 측면이 되겠죠.이 개발자는 int와char 등을 지정하지 않아도 자동으로 보충과 복잡도를 줄일 수 있다.

장점과 단점


추측 유형의 동적 유형에 따라 코드를 간단하고 간결하게 기술할 수 있다.기쁘고 축하할 만하다.아니야.
정적, 동적 유형은 장점과 단점이 있다.차라리 한 바퀴 도는 게 낫지 않을까요?이런 의견도 있다.

동적 유형은 실행 단계 이전에 오류를 발견할 수 없습니다.이 때문에 대규모 개발에서 오류가 발생했을 때 찾기가 어렵다.프로그램을 발표한 후 자주 오류가 발생합니다.그런 이유로 지금까지 두 사람은 안전성·유연성을 따지는 관계에 있다.

하스켈의 형 추론은?


데이터 유형을 컴파일할 때 판정하고 보충하는 기능을 말한다.간단하게 말하면 정태형, 동태형의 장점과 장점.왜 이런 일을 할 수 있었는지는 프로그램이 지정한 코드에 따라 자동으로 유형을 추측하기 때문이다.
여기 변수: x의 데이터 형식은 무엇입니까?이것은 수치가 1을 증가시킨 조카 함수다.
zouka x = x + 1
이 경우 컴파일러는 x가 수치형임을 자동으로 판단한다.x에 대해 "+1"의 연산을 진행했기 때문이다.따라서 zuka 함수에 문자열 "ABC"등을 적용할 때 오류가 발생합니다.
사용형 추론 기능은 데이터 형식을 지정하지 않아도 코드를 쓸 수 있다.변수의 데이터 형식을 모두 기술하는 것은 매우 번거로운 일이며, 프로그램이 길고 복잡한 원인이다.형 추론 덕분에 간단하고 뚜렷하며 간결한 코드를 쓸 수 있었다.그것은 독자들에게 매우 가볍다.

역동적인 장르와는 변함이 없죠?


그러나 이것만 보면 동적 유형과 형추론의 구조는 같다.그러나 동적 유형과 형추론은 잘못된 시기를 발견했다.다만 오류를 발견한 시기가 다르면 양자의 성능은 큰 차이가 있다.

소스 코드 - 실행


우리가 쓴 소스 코드를 실행하려면
1. 소스 코드
2. 컴파일(기계어로 번역)
3. 집행
3단계를 밟다.이 세 단계는 잘못을 발견할 시기가 다르다.
  • 형 추론: 컴파일 단계에서 오류 발견
    →번역하면 거의 오류 없음
  • 동적 유형: 실행 중 오류 발견
    → 값이 변경될 때 오류 발생
  • 미묘한 차이는 있지만 큰 차이가 생긴다.

    동적 유형


    동적 유형은 실행할 때만 오류를 발견할 수 있습니다.프로그램을 실행하지 않으면 모델이 어떤 모양, 크기인지 판단할 수 없기 때문에 실제 조작 프로그램이 아니면 모른다.이 때문에 오류의 발견이 어려워져 대량의 테스트 절차가 필요하다.

    추론적 상황


    다른 한편, 형추론이라면 번역 단계에서 오류를 발견할 수 있다.이상한 데이터 형식 조합이라면 미리 알려드릴게요.실행할 때의 형식 오류가 없기 때문에 한 번만 컴파일하면 코드가 기본적으로 정확하게 작동합니다.이렇게 하면 간단한 설명과 오류가 없는 프로그램을 실현할 수 있다.

    유형 변수 클래스


    그나저나 데이터를 유연하게 처리할 수 있는 다른 메커니즘도 준비했다.그것은 형변량/형류다.유형 변수를 사용하면 불특정한 여러 데이터 형식이라도 받아들일 수 있기 때문에 통용 함수를 만드는 데 도움이 된다.유형 클래스의 구조를 사용하면 유형 변수를 받아들일 수 있는 데이터 형식을 지정할 수 있습니다.이것은 번역할 때도 오류를 잘 발견할 수 있기 때문에 오류, 오류가 발생하지 않고 이런 구조를 사용할 수 있다.

    좋은 웹페이지 즐겨찾기