적용하다
Apply![]() | 무료 사전인 Wiktionary에서 지원서를 찾아 보십시오. |
수학과 컴퓨터 과학에서 적용은 논쟁에 함수를 적용하는 기능이다.LISP, Scheme 등 람다 미적분학에서 파생된 언어 프로그래밍과 기능 언어의 중심이기도 하다.완전한 부분 주문에 대한 연속적인 기능이기 때문에 컴퓨터 프로그램의 부조화 의미론 연구에 역할을 한다.적용은 또한 호모토피 이론에서 연속적인 기능이며, 실제로 전체 이론의 밑바탕이 된다: 그것은 호모토피 변형을 함수의 공간에서 연속적인 경로로 볼 수 있게 한다.마찬가지로, 컴퓨터 프로그램의 유효한 돌연변이(반복)는 스콧 토폴로지에서 "연속적인" 돌연변이로 볼 수 있다.
적용에 대한 가장 일반적인 설정은 범주 이론에 있는데, 여기서 폐쇄적인 단일 범주에서 커서를 하는 것이 옳다.이것의 특별한 경우는 카르테시안 폐쇄 범주인데, 그 내부 언어는 간단히 타이핑된 람다 미적분학이다.
프로그래밍
컴퓨터 프로그래밍에서 apply는 인수 목록에 함수를 적용한다.평가와 적용은 평가-적용 주기의 두 개의 상호의존적 요소로서 SICP에 기술된 Lisp 평가의 본질이다.[1]함수 적용은 람다 미적분의 베타 감소에 해당한다.
적용함수
Apply는 또한 여러 언어로 된 특수함수의 명칭으로, 함수와 목록을 취하며, 마치 함수가 리스트의 요소를 인수로 하여 호출된 것처럼 함수의 자체 인수 목록으로 목록을 사용한다.이것은 변량 함수가 있는 언어에서 중요한데, 이는 불확정(컴파일 시) 수의 인수를 가진 함수를 호출하는 유일한 방법이기 때문이다.
커먼 리스프 및 스키마
Common Lisp apply는 인수 목록에 함수를 적용하는 함수다(여기서 "+"는 임의의 수의 인수를 사용하는 가변 함수라는 점에 유의한다).
(신청하다 #'+ (리스트를 작성하다 1 2))
유사한 구성표:
(신청하다+ (리스트를 작성하다1 2))
C++
C++에서 Bind는 std 네임스페이스 또는 부스트 네임스페이스를 통해 사용된다.
C# 및 자바
C#와 Java에서는 변량 인수가 배열로 간단히 수집된다.호출자는 변수 인수 대신 배열을 명시적으로 전달할 수 있다.이것은 가변 파라미터에 대해서만 할 수 있다.반사를 사용하지 않고 변수의 배열을 비변량 파라미터에 적용할 수 없다.발신자가 배열 자체를 인수 목록으로 사용하기보다는 하나의 인수로서 배열 자체를 통과시키고자 할 경우 모호한 경우가 발생한다.이 경우 호출자는 다음 위치에 배열을 캐스팅해야 한다.Object
컴파일러가 적용 해석을 사용하지 못하도록 하기 위해.
varivichFunc(ArrayOfArgs);
버전 8 람다 표현이 소개되었다.기능은 하나의 비정적 방법만을 가진 인터페이스인 기능 인터페이스를 가진 객체로 구현된다.표준 인터페이스
함수<T,R>
메소드로 구성된다(일부 정적 유틸리티 기능 포함):
R 신청하다(T 파를 치다)
가다
Go에서, 타입의 변량 인수는 단순히 한 조각으로 수집된다.호출자는 다음을 추가하여 변동 인수 대신 슬라이스를 명시적으로 전달할 수 있다....
단도직입적으로이것은 가변 파라미터에 대해서만 할 수 있다.호출자는 반사를 사용하지 않고 비변수 매개변수에 일련의 인수를 적용할 수 없다.
s := []끈을 매다{"foo", "바"} varivichFunc(s...)
하스켈
Haskell에서 함수는 다음과 같은 간단한 병렬 처리를 통해 적용할 수 있다.
펑크 param1 param2 ...
하스켈에서 구문은 또한 각 매개변수가 차례로 그 기능을 수행한다고 해석될 수 있다.위의 예에서 "func param1"은 함수에 더 이상의 매개변수가 없을 때까지 매개변수 2 등에 적용되는 한 개의 매개변수를 수용하는 다른 함수를 반환한다.
자바스크립트
JavaScript에서 함수 객체는apply
방법, 첫 번째 인수는 의 값이다.this
함수 내부 키워드, 두 번째 인수 목록:
펑크.신청하다(무효의, 아그);
ES6는 스프레드 연산자를 추가함func(...args)
[3] 대신 사용할 수 있는apply
.
루아
Lua에서 신청서는 다음과 같이 작성될 수 있다.
기능을 발휘하다 신청하다(f,...) 돌아오다 f(...) 종지부를 찍다
펄
Perl에서 배열, 해시 및 표현식은 함수의 인수 목록과 같이 목록 컨텍스트에서 평가될 때 단일 목록으로 자동 "평면화"된다.
# 등가 서브루틴 호출: @args = (@some_args, @more_args); 펑크(@args); 펑크(@some_args, @more_args);
PHP
PHP에서는apply
라고 불린다call_user_func_array
:
call_user_func_array('func_name', $args.);
파이톤과 루비
Python과 Ruby에서 변수 함수를 정의할 때 사용되는 것과 동일한 별자리 표기법은 각각 시퀀스와 배열에서 함수를 호출하는 데 사용된다.
펑크(*아그)
Python은 원래 적용 기능을 가지고 있었지만, 이것은 2.3에서 별표를 선호하여 더 이상 사용되지 않고 3.0에서 제거되었다.[4]
R
R에서.do.call
이름 또는 함수에서 함수 호출을 구성하고 실행할 인수 목록:
f(x1, x2) # 또한 다음을 통해 수행 가능 do.call(무엇 = f, 아그 = 리스트를 작성하다(x1, x2))
스몰토크
Smalltalk에서 블록(기능) 물체는valueWithArguments:
인수의 배열을 사용하는 방법:
a 블록 valueWithArguments: 아그
Tcl
Tcl 8.5 이후, 함수는 를 가진 인수에 적용될 수 있다.[5]apply
명령하다
func ?arg1 arg2 ...?
여기서 함수는 두 개의 요소 목록 {args body} 또는 세 개의 요소 목록 {args body 네임스페이스}이다.
보편적 재산
Consider a function , that is, where the bracket notation denotes the space of functions from A to B.커리어를 이용하여 독특한 기능 )가 있다(g ) X→[ → Z Z 그러면 Apply는 보편적인 형태론을 제공한다.
- : → )→ Z Z Y
하도록
더 정확히 말하자면, 카레와 바르는 것은 부조화물이다.
A에서 B까지의 함수 공간에 대한 → 표기법은 컴퓨터 공학에서 더 흔히 나타난다.범주론에서는, 그런데,[A→ B]{\displaystyle[A\to B]}이 기하 급수적으로 개체로 와 B{\displaystyle B^{A}}로 쓰여 있다. 컴퓨터 과학에서 eval 구별에, 이러한는 같은 것이 아닙니다, 예를 들어 적용을 종종 Eval,[6]라고 불린다 다른 흔한 표시 법의 차이점 또한 있는 것으로 알려졌다. froom Apply(적용)는 일부 인수에 함수를 적용하는 것이 아니라 함수의 인용된 문자열 형식의 인수를 평가하는 것으로서 적용된다.
또한 범주론에서 카레는 일반적으로 에 의해 표기되므로 은 카레(g)용으로 표기된다.이 표기법은 람다 미적분학에서 을(를) 사용하는 것과 상충된다. 여기서 람다는 바운드 변수를 나타내기 위해 사용된다.이러한 모든 명목상의 변화를 고려하여 Apply와 Curry의 비례성은 통근 도표에 표현된다.
지수적 목적과 데카르트 폐쇄 범주에 관한 기사는 이 아이디어의 범주-이론적 공식화에 대한 보다 정확한 토론을 제공한다.따라서 여기서 람다를 사용하는 것은 우연이 아니다; 까르테시안 폐쇄 범주의 내부 언어는 단순한 형태의 람다 미적분학이다.적용에 대해 가장 일반적으로 가능한 설정은 닫힌 단면체 범주인데, 그 중 데카르트 폐쇄 범주가 그 예다.동질대수학에서 카레와 적용의 조정성을 텐서-홈 접합이라고 한다.home adjection)이라고 한다.
위상학적 특성
순서 이론에서, 스콧 토폴로지에 부여된 완전한 부분 주문의 범주에서, 카레와 적용은 모두 연속 기능이다(즉, 그들은 스콧 연속이다).[7]이 속성은 컴퓨터 프로그램의 부조화 의미론 연구의 기초적 타당성을 확립하는 데 도움이 된다.
대수 기하학 및 호모토피 이론에서 와 적용은 X 에서 까지의 연속함수의 공간 을(를) 콤팩트 오픈 토폴로지로 부여하고, {\은 로컬 컴팩트 하우스도르프일 때 모두 연속함수다.이 결과는 호모토피 이론을 뒷받침하여 기능 공간의 연속적인 경로로 이해될 수 있다는 점에서 매우 중요하다.
참조
- ^ Harold Abelson, Jerald Jay Sussman, Julie Susman, 컴퓨터 프로그램의 구조 및 해석, (1996) MIT 프레스, ISBN0-262-01153-0.섹션 4.1, 전이분자 평가자 참조
- ^ "Boost: Bind.HPP documentation - 1.49.0".
- ^ "Spread syntax - JavaScript MDN". Retrieved 2017-04-20.
- ^ "Non-essential built-in functions". Python Library Reference. 8 February 2005. Retrieved 19 May 2013.
- ^ "apply". Tcl documentation. 2006. Retrieved 23 June 2014.
- ^ 선더스 맥 레인, 카테고리 이론
- ^ H.P. 바렌트레트, 람다 미적분 (1984) 노스홀랜드 ISBN 0-444-87508-5