함수

함수는 여러 가지 상황에 유용한 표현식을 캡슐화합니다. 함수는 실제 매개변수에 적용될 때 실행됩니다. 함수 애플리케이션의 일반 구문에서는 함수 이름 다음에 표현식이 옵니다.

몇 가지 예로는 모두("Class") 및 현재 클래스가 있습니다. Q 언어의 함수 파트에서는 새 함수를 정의할 수 없습니다.

모든 함수는 단일 매개변수를 사용합니다. 둘 이상의 매개변수를 사용하도록 표시되는 함수는 실제로 해당 매개변수가 포함된 단일 튜플을 사용합니다. 모든 함수가 단일 매개변수를 사용하므로 매개변수를 괄호로 닫을 필요가 없습니다. 대신 이름 다음에 오는 가장 작은 전체 표현식이 매개변수로 사용됩니다. 이 "가장 작은 전체" 표현식 사용 규칙은 경우에 따라 매개변수에 대한 더 큰 표현식을 나타내는 데 괄호가 필요함을 의미합니다.

함수가 유용하게 사용되는 다른 두 가지 측면이 있습니다. 첫 번째로, 함수 애플리케이션은 최상위 우선순위 레벨에 있습니다. 따라서 일반적으로 함수 애플리케이션이 컴포지트 표현식에서 + and와 같은 연산자보다 먼저 평가됩니다. 두 번째로, 함수 애플리케이션은 오른쪽과 연관됩니다.

이러한 위치를 설명하기 위해 incdec라는 두 가지 함수를 고려합니다. 이러한 함수는 Q 언어의 파트가 아니므로 단지 예제와 같이 사용됩니다. inc 함수는 정수를 사용하고 해당 정수에 1을 더해 리턴합니다. neg 함수는 정수를 사용하고 해당 정수의 음수를 리턴합니다. 다음 예제에서는 ≡ 기호를 사용하여 등가를 표시하며 일부 표현식에 대한 대응을 전체적으로 괄호로 묶습니다.

   inc 5 ≡ inc (5) ⇒ 6
   neg 5 + 3 ≡ (neg (5)) + 3 ⇒ -2
   neg (5 + 3) ⇒ -8
   neg 5 + inc 3 ≡ (neg (5)) + (inc (3)) ⇒ -1
   neg (5 + inc 3) ⇒ -9
   neg inc 3 ≡ neg (inc (3)) ⇒ -4
   neg inc 3 + 1 ≡ (neg (inc 3)) + 1 ⇒ -3
   neg neg neg neg 3 ≡ neg (neg (neg (neg (3)))) ⇒ 3

피드백