-
By “environment variables” do you mean the variables captured in the closure of this anonymous function?
-
Using the following compiled code:
defmodule MyModule do
def fun_1 do
fn x -> x end
end
def fun_2 do
fn x -> x end
end
def compare_1 do
((fn x -> x end) == (fn x -> x end)) |> IO.inspect()
end
def compare_2 do
(fn x -> x end) |> Function.info() |> IO.inspect()
(fn x -> x end) |> Function.info() |> IO.inspect()
:ok
end
end
iex -S mix:
iex> MyModule.fun_1() |> Function.info()
[
pid: #PID<0.252.0>,
module: MyModule,
new_index: 0,
new_uniq: <<93, 38, 53, 241, 226, 42, 107, 201, 80, 47, 228, 61, 192, 123,
202, 1>>,
index: 0,
uniq: 48837039,
name: :"-fun_1/0-fun-0-",
arity: 1,
env: [],
type: :local
]
iex> MyModule.fun_2() |> Function.info()
[
pid: #PID<0.252.0>,
module: MyModule,
new_index: 1,
new_uniq: <<93, 38, 53, 241, 226, 42, 107, 201, 80, 47, 228, 61, 192, 123,
202, 1>>,
index: 1,
uniq: 48837039,
name: :"-fun_2/0-fun-0-",
arity: 1,
env: [],
type: :local
]
iex> MyModule.compare_1()
false
iex> MyModule.compare_2()
[
pid: #PID<0.251.0>,
module: MyModule,
new_index: 2,
new_uniq: <<122, 234, 246, 244, 241, 108, 55, 10, 70, 250, 99, 174, 106, 44,
101, 226>>,
index: 2,
uniq: 64444343,
name: :"-compare_2/0-fun-0-",
arity: 1,
env: [],
type: :local
]
[
pid: #PID<0.251.0>,
module: MyModule,
new_index: 3,
new_uniq: <<122, 234, 246, 244, 241, 108, 55, 10, 70, 250, 99, 174, 106, 44,
101, 226>>,
index: 3,
uniq: 64444343,
name: :"-compare_2/0-fun-1-",
arity: 1,
env: [],
type: :local
]
:ok
Looks like the functions will always differ at least in new_index or index (?)