不変の参照またはラベルのみを持つ言語の名前変数の良い代替手段は何ですか?


11

たとえば、関数型言語では、変数は単一の割り当てであり、値は割り当てられると不変です。そのため、バインドされいない状態とバインドされた状態の2つがあり、一度バインドされると変更できません。

そのようなものに最も適した数学用語や他のコンピューター科学用語はありますか?意味的に分散や可変性を意味しないもの。

termなど存在しない場合、およびそのような構造を持つ言語を設計している場合、これらに使用するのは単語変数以外です。

私はアイデアを投票するつもりはありません。そのようなことに対して受け入れられている業界(業界)の用語があるかどうかを把握しようとしています。


1
それらを不変と呼ぶだけです;)
Oded

最終変数?
smp7d

9
これらの種類の変数の数学用語は「変数」です。可変変数の概念は、プログラミング言語が登場するまで実際には存在しませんでした。
sepp2k

1
@ sepp2kには同意しません。「変数」という用語は、微分積分学の開発においてライプニッツによって導入され、それ以来数学と物理学の一部となっています。これらの可変数量には、必然的に変更する可能性が必要です。それ以外の場合、$ \ Delta x $または$ dx $の考えは意味がありません。
マイケルベッハルト

1
@ sepp2k私は同意しません。数学には再割り当ての概念があります、伝統的にそう呼ばれていません。数学者は、常にコンテキストにx、yなどの変数を(値を割り当てずに)導入し、y + x = 5などの変数について何かを想定しています。次に、x = 1と仮定し、y = 4と結論付けます。彼らは仮定x = 1を捨て、代わりにx = 2を仮定し、y = 3を結論付けるかもしれません。私にとってそれはxの変化であり、x + y = 5という仮定が両方のコンテキストで成り立つため、同じ変数xについてまだ話している。
マイケル・ベヒトルト

回答:


4

「シンボル」はどうですか?

F#で、スピーカーが言ったビデオを見ました。

変数に値を割り当てない場合、値をシンボルにバインドします 。

(まだこの参照を探しています。)

そのような構造が不変の場所で「変数」という言葉に出会うたびに、私は静かに「束縛されたシンボル」と考えます。


10

それらを変数と呼ぶだけです。数学には変数があります。関数型言語には同じ種類の変数があります。

また、この用語問題に関するボブハーパーによるこのエッセイを見てください。


これは私が探していたものの線に沿っていますが、提供されたリンクは答えよりも多くの議論を巻き起こします。

@JarrodRoberson、リンクされたエッセイを「なぜ変数が適切な用語なのか」と考えてください。「アサイナブル」に関する部分は無視してください。
ライアンカルペッパー

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

コンテキストに応じて、「変数」または「バインディング」が機能します。letHaskellやLispのようなステートメントで「バインディング」が出てくる可能性が高いと思う。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.