The Talk Constants And Variables In Erlang

mitnk: Hi, I'm new to Erlang. Can anybody show me how to define a global like variable in Erlang? I wrote like this, http://codepad.org/kSMIyRyc But it got compile Errors.

Erlang: Python code- 18 lines - codepad (0.02s)

dottedmag: mitnk: you don't

dottedmag: mitnk: there are no variables in Erlang, just constants. If you need a constant, just declare arg-less function.

DeadZen: there are variables in erlang.

dottedmag: DeadZen: if you count ETS as variables.

DeadZen: no im counting immutable variables as variables

dottedmag: They aren't _var_iables, they don't vary, right?

DeadZen: and there are mutable variables beyond just ets..

DeadZen: yes they do vary

DeadZen: they don't mutate.

mitnk: How to define and constant? I'm going to look at arg-less

dottedmag: mitnk: my_age/0

DeadZen: variables have different values. thats why they're called variables.. not because a single variables value varies

DeadZen: thats why they're called immutable variables not immutable constants

mitnk: dottedmag: It was in my code.

dottedmag: mitnk: that's the arg-less function.

dottedmag: DeadZen: "immutable variables" is oxymoron

DeadZen: not really... immutable variables and immutable flags are long standing terms

mitnk: dottedmag: Then what you mean by saying "If you need a constant, just declare arg-less function."

dottedmag: mitnk: my_age/0 is constant. So you have already declared it.

DeadZen: but thats not a variable my_age is a function

DeadZen: i thought the question was global variables

mitnk: Ok, thx. Yeah, I meant constant rather than global varmy mistake.

DeadZen: in erlang the question becomes global to what?

DeadZen: global to that process? that node? that cluster?

dottedmag: mitnk: There's another way to do it: http://www.erlang.org/doc/reference_manual/macros.html

Erlang: Erlang -- The Preprocessor (0.86s)

DeadZen: mitnk: -define(MY_AGE, 18). after -export

dottedmag: mitnk: see the 8.2

DeadZen: mitnk: then reference ?MY_AGE in bar()

mitnk: DeadZen: Well, I am writing a simple Sequential program. Maybe I asked a bad question.

DeadZen: mitnk: I don't believe in bad questions, even asking the wrong question is useful indication

DeadZen: mitnk: the subsequent question is always... now what are you trying to do?

mitnk: DeadZen: "-define(MY_AGE, 18)" seems just what I am looking for

DeadZen: dottedmag: also i still assert 1 allowed mutation constitutes a variable.

DeadZen: dottedmag: albeit with limited assignment variability?;p

dottedmag: There is no mutation or assignment -- just coming to scope with defined value.

DeadZen: well thats really what erlang is saying.. once a variable is set, its no longer safe to change it

DeadZen: the value can vary, but not be reassigned

dottedmag: Different instances of the same, ahem, variable may exist with different values in different scopes, but the every particular example is immutable and does not vary.

dottedmag: But that's just the terminology.

dottedmag: So let's agree we describe the same situation using different terms.

DeadZen: thats interesting you consider it not setting a variable but brining a non variable to scope

DeadZen: dottedmag: its 6am, i haven't slept, semantic death is imminent

DeadZen:

dottedmag: good night

DeadZen: nah its funny, i had the same thought but arrived at the opposite conclusion

DeadZen: A=1. simple a variable A set to 1.. B = A. a variable B set to the variable A.. the values could be anything.. ergo. they're variables

mitnk: DeadZen: Bye, thx!

DeadZen: mitnk: you're welcome, keep at it

mitnk: dottedmag: I knew variable in Erlang is different. But in book "Programming Erlang", Joe call them variables

DeadZen: if it makes you feel better, we can call them predictable variables

mitnk: Okey

DeadZen: lol

ttmrichter: mitnk: They are variables.

ttmrichter: In the mathematical sense of the term.

ttmrichter: If you think about it, the statement "x = x + 1" is ludicrous.

ttmrichter: It cannot be possible in anything except the most neurotic of number systems (a number system which has one value and is a ring).

ttmrichter: had a massive shock on first contact with BASIC back in the day when seeing "A = A + 1".

ttmrichter: It just didn't make any damned sense.

Erlang: does not compute

mitnk: Thank you, ttmrichter. That's can be right, but my question (concern) here is not this. Thanks all!

ski_: mitnk : your pasted code works fine, if you lift the call to my_age/0 out of the condition

ski_: ponders using a parameterized module for this ..

mitnk: ski_: Yes, I tried that. But I don't want create an extra variable; -define is just the case

ttmrichter: ski_: Parameterized modules are evil.

ski_: ttmrichter : i'm not convinced

ski_: mitnk : nod, then go with that

DeadZen: draws horns on parameterized modules

DeadZen: adds a picture of rush limbaugh

DeadZen: ski_: k... how bout now?

Licenser: heh

Licenser: ski_ there is a very good explemation why somewhere on the interwerbs let ne dig it out

Licenser: http://ferd.ca/you-will-regret-this.html

Erlang: ferd.ca -> YOU WILL REGRET THIS (0.22s)

Licenser: that one, realy worth looking at, not only opend it my eyes but ti made me laugh a lot

nox: when was released -callback attributes?

nox: were*

ski_: DeadZen : all lies !

ski_: (though i suppose horns is a biblical symbol for power ..)

DeadZen: nox: r15 i think

DeadZen: ski_: WITCH!

nox: DeadZen: thanks

Copy right by mitnk, dottedmag, DeadZen, ttmrichter, ski_, Licenser, and nox @ Erlang IRC :P