명세서가 뭐예요?[] (빈 목록) 및: (cons 연산자)

이 기사에서는 목록의 구조에 대해 해설을 할 것이다.
리스트를 만들기 위해서는 두 가지가 필요하다.[](빈 목록)와 :cons 연산자.
[] (빈 목록) → 유형 구조기, 빈 목록
: (cons 연산자) - 값과 목록을 조합하는 함수[] 두 가지 유형의 구조기와 빈 명단을 사용한다.:(cons 연산자)의 원시 기능은 함수이다.각자의 구조를 상세히 설명하다.

[] (유형 구조기, 빈 목록)


우선 각괄호[]를 자세히 알아보기 위해:i 명령으로 조사를 해보자.
Prelude> :i []
type [] :: * -> * //型コンストラクタとして定義
data [] a = [] | a : [a] //リストの値として定義
같은 방괄호[]라도 두 가지 사용법임을 알 수 있다.하나는 두 번째 줄의 유형 구조기의 사용 방법이고, 다른 하나는 세 번째 줄의 목록 데이터 형식의 사용 방법이다.
유형 구조자로서, 이것은 수신 데이터형 (예: Int) 으로 정의되고, 새로운 데이터형 (예: Int) 을 반환하는 기능으로 정의된다.* 어렵게 말하면 구체형이고 추출 매개 변수가 필요 없는 일반적인 데이터형(즉 Int,Char,Double 등)으로 생각하십시오.
데이터 유형으로 OR 조건으로 정의하여 값을 가져옵니다.[] | a : [a][]OR 조건에서 두 가지 방법을 사용하는 것을 말한다.)하나의 값(OR 조건 왼쪽)은 빈 목록이고, 다른 값(OR 조건 오른쪽)은 빈 목록이 아니라 하나의 값 목록이다.(수신형 변수 a, [a]형의 값을 만들어라.)
각괄호[]는 같은 기호라도 두 가지 다른 사용법이 있다는 것이다.

데이터 형식으로 사용하시겠습니까?값으로 사용하시겠습니까?에 따라, 완전히 다른 뜻이 있다.

1. 금형구조기


첫 번째 사용 방법은 구조기다.유형 구조기란 데이터형을 만드는 데이터형을 가리킨다.간단하게 말하면, 그것은 어떤 데이터형에 달라붙어 다른 데이터형을 만드는 기능을 가지고 있다.
다른 데이터 형식을 목록(데이터 형식)과 결합시켜 목록 형식의 값을 만듭니다.다음 그림과 같습니다.

이 메커니즘을 사용하여 목록에 데이터 형식을 지정할 수도 있습니다.
Prelude> [1,2,3] :: [Int]
[1,2,3]
여기서 [1,2,3]라는 목록에 [Int]라는 데이터 형식을 지정했습니다.단순한 Int가 아니라 리스트 유형의 Int입니다.

무엇이 중형 구조기입니까?


데이터 유형.이렇게 말하면 매우 어렵다.형 구조기는 일본어로 직접 생각하면 이해하기 쉬울 것 같다.
유형 = 데이터 유형
구조기
타입 구조기란 데이터형을 구축하는 것(만드는 것)이라는 것이다.Int, Char 등의 데이터 유형과는 완전히 다릅니다.따로 데이터형으로 만들 수 없는 반인분의 존재다.다른 데이터형과 조합해야만 혼자서 한 면을 맡을 수 있다.
또 다른 유명한 유형의 구조기Maybe도 있다.
Prelude> :i Maybe
type Maybe :: * -> *
data Maybe a = Nothing | Just a
여기도 []와 같다. 두 번째 줄은 유형 구조기, 세 번째 줄은 OR 조건의 데이터 형식으로 정의한다.
유형 구조자로서 데이터형(예를 들어 Int)을 받아들이고 새로운 데이터형(예를 들어 Maybe Int)을 반환해야 한다고 한다.데이터 형식이 아니면Nothing 어떤 데이터 형식의 값을 되돌려줄지 지정할 수 있습니다.이상은 그림으로 아래와 같다.
[] 이런 유형의 구조기는 다른 데이터 유형과 결합하여 목록을 만든다.첫 배역이야.

2. 빈 목록


두 번째는 값으로 사용하는 방법이다.[] 빈 목록 값이 있습니다.이번에는 단지 가격으로 사용하는 상황일 뿐이다.그래서 같은 []라도 구조기를 써야 하나요?값으로 사용하시겠습니까?뜻은 상황에 따라 완전히 다르다.
Prelude> []
[]
여기는 빈 목록만 값으로 출력합니다.
그나저나 [], [[]]의 뜻은 완전히 다르다.첫 번째는 빈 목록이고, 첫 번째는 빈 목록을 포함하는 목록입니다.

: (cons 연산자)


이것은 목록을 만드는 데 필요한 두 번째다.cons 연산자는 일반 값에서 목록을 출력하는 함수입니다.cons는 cons tructor의 약칭으로 Lisp에서 기원한다.
우리 cons 연산자의 구체적인 내용을 봅시다.
Prelude> :t (:)
(:) :: a -> [a] -> [a]
:는 함수로 정의되어 있음을 주의하십시오.通常の値リストリスト化された通常の値이런 기능이 있다.일반적인 값 이외에 목록이 필요하다는 것을 주의하십시오.cons 연산자 중 하나가 목록이 아니면 목록을 만들 수 없습니다.
Prelude> 1 :[]
[1]
는 상기 목록[](빈 목록)과 :(cons 연산자)를 조합하여 만든다.중간 연산자로 정의되어 있기 때문에 1[] 사이에cons 연산자를 설정합니다.

문법 사탕옷


목록의 원래 쓰기 방법은 1:2:3:[]였다.[1,2,3]라고 쓸 수 있었던 것은 문법 당의의 구조를 사용했기 때문이다.문장 구조 당의는 간단하게 기술하기 위한 구조다.1:2:3:[][1,2,3]는 모두 똑같아서 후자는 직관적으로 이해하기 쉽다.
이렇게 생각하십시오
Prelude> 1:2:3:[]
[1,2,3]
1:2:3:[].[]는 빈 목록입니다.그 첫머리에 3을 추가하면[3].그리고 처음에 2를 추가하면[2].마지막으로 첫머리에 1을 추가하면[1].
Prelude> 1:2:3:[4,5,6]
[1,2,3,4,5,6]
위와 같이 쓰셔도 됩니다.[4:5:6] 이 목록은 쓰기4:5:6:[]와 완전히 같다.따라서 cons 연산자를 사용하여 []의 시작에 끊임없이 수치를 증가시킨다.
이것은 잘못된 것이다
Prelude> [1,2,3] : [4,5,6]
// リスト同士をつなげるには++演算子を使う
참고로, 목록을 cons 연산자로 연결하려면 오류가 발생할 수 있습니다.여기에 ++ 연산자가 필요합니다. 주의하십시오.

좋은 웹페이지 즐겨찾기