불변의 참조 또는 레이블 만있는 언어의 이름 변수에 대한 좋은 대안은 무엇입니까?


11

예를 들어, 기능적 언어에서 변수 는 단일 할당이며 일단 할당 된 값은 변경할 수 없습니다. 따라서 unboundbound의 두 가지 상태가 있으며 한 번 바인드하면 변경할 수 없습니다.

물건과 같이 가장 적합한 수학 용어 나 다른 컴퓨터 과학 용어가 있습니까? 뭔가 의미 분산 또는 가변성을 의미하지는 않습니다.

용어와 같이 존재하지 않고 그러한 구조를 가진 언어를 디자인하는 경우, 단어 변수 이외의 다른 단어 를 사용 하시겠습니까?

나는 실제로 아이디어 를 조사 하려고 하지 않고 , 이미 그런 산업에 대해 허용되는 산업 (모든 산업) 용어가 있는지 알아 내려고 노력하고 있습니다.


1
그냥 불변 이라고 부른다 ;)
Oded

최종 변수?
smp7d

9
이러한 종류의 변수에 대한 수학적 용어는 "가변"입니다. 프로그래밍 언어가 그림에 들어갈 때까지 가변 변수의 개념은 실제로 존재하지 않았습니다.
sepp2k

1
@ sepp2k에 동의하지 않습니다. "가변"이라는 용어는 라이프니츠 (Leibniz)가 미분 미적분학을 개발할 때 도입했으며, 그 이후로 수학과 물리학의 일부였습니다. 이러한 가변 수량은 반드시 변경 가능성이 필요합니다. 그렇지 않으면 $ \ Delta x $ 또는 $ dx $의 개념은 의미가 없습니다.
Michael Bächtold

1
@ sepp2k 동의하지 않습니다. 가 이다 는 전통적으로 그런 식으로 호출되지 비록 수학에 재 할당의 개념. 수학자들은 변수에 값을 할당하지 않고 x, y라는 변수를 끊임없이 도입하고 y + x = 5와 같은 변수를 가정합니다. 다음으로 x = 1이라고 가정하고 y = 4라고 결론 지을 수 있습니다. 그들은 x = 1 가정을 버리고 대신 x = 2라고 가정하고 y = 3으로 결론을 내릴 수 있습니다. 저에게는 x의 변화이며 x + y = 5 가정이 두 컨텍스트에서 모두 적용되므로 동일한 변수 x에 대해 이야기하고 있습니다.
Michael Bächtold

답변:


4

"기호"는 어떻습니까?

스피커가 말한 F # 비디오를 보았습니다.

당신이하지 않는 지정 에 값을 변수 , 당신은 바인딩 A와 값 기호를 .

(여기에 대한 참조를 계속 찾으십시오.)

그러한 구성이 불변 인 곳에서 "variable"이라는 단어가 나타날 때마다 나는 "바운드 심볼"이라고 생각한다.


10

그냥 변수라고 부릅니다. 수학에는 변수가 있습니다. 기능 언어는 같은 종류의 변수를 갖습니다.

용어 문제 에 대해서는 Bob Harper의이 글을 참조하십시오 .


이것이 내가 찾고있는 내용을 따르고 있지만 제공된 링크는 답변보다 더 많은 논쟁을 불러 일으 킵니다.

@JarrodRoberson, " 변수 가 적절한 용어 인 이유"로 링크 된 에세이를 사용하십시오 . "할당 가능"에 대한 부분은 무시하십시오.
Ryan Culpepper

1
예, 과제물 은 그 토론에서 일종의 청어입니다. 그러나 개인적으로 나는 변수다양한 부분 과 컴퓨터 과학이 많은 경우 수학 용어와 100 % 직접적인 상관 관계가 없다는 사실 에 여전히 의미있습니다 .

4

다른 호출에서 다양한 값을 취할 수 있다면 여전히 변수입니다. 다시 말해, 일단 할당 된 후에는 변경할 수 없지만 해당 기호는 처음에 다른 값으로 할당 될 수 있습니다. 그것은 호출 될 때마다 동일한 값을 포함 하는 상수 와 대조적 입니다.



1

이름 . 동일한 이름이 여러 이름 ( x = 4; y = 4) 으로 합리적으로 호출 될 수 있습니다 . 한 번 정의 된 이름은 해당 참조를 변경하지 않습니다. x = 2; x = 3문어가 문어가 아니라고 말하는 것만 큼 의미가 없습니다.


나는 이것을 좋아한다. 나는 용어를 고려하고 label있었지만 name더 나쁘지 않으면 잘 작동한다.

0

왜 그 용어를 고수하지 않습니까? 100 % 적절하지는 않지만 해결하려는 이름보다 더 많은 오해의 원인이되는 다른 이름을 선택할 때. 다른 기능적 언어의 설계자들도 같은 문제를 겪었지만 "가변"이라는 용어를 사용하기로 결정했습니다.

XSLT (일반적으로 사용됨) :

http://www.w3schools.com/xsl/el_variable.asp

하스켈 :

http://www.haskell.org/onlinereport/haskell2010/haskellch3.html#x8-240003.2

계획:

http://www.scheme.com/tspl2d/binding.html

얼랭 :

http://www.erlang.org/doc/reference_manual/expressions.html

그들 모두 "가변"이라는 용어를 사용하고 있습니다.

물론 다른 언어 설계자들은 F #에서와 같이 "바인딩"또는 "바운드 값"에 대해 이야기하는 것을 선호합니다.

http://msdn.microsoft.com/en-us/library/dd233238.aspx


0

contex에 따라 "variable"또는 "binding"이 작동합니다. let하스켈이나 리스프 와 같은 성명서에서 "바인딩"이 나올 가능성이 높다고 생각 합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.