archives

languages with call by value only (and maybe closures)?

Hi, are there any languages where function call is only by value. If you pass a variable to a function you can only pass a copy of it. Inside of a function body you can mutate the values as desired. My thinking is that the called function is not going to have side effects on the state of the caller.

More interesting, is it possible to have data structures in such a language? I'm sorry if this seems very vague, but I am not very sure what I'm thinking of either.

Edit: also, what would the effect of closures in this type of language? Closures allow you to 'reach into' a returned value.

var f = function() {
var i = 0;
return {
function() { i++; },
function() { return i; }
}
}