Divné chování Erlangu

Ja

Divné chování Erlangu
« kdy: 31. 01. 2015, 14:19:47 »
Ahoj, můžete mi prosím říct, proč sakra ten program nefunguje? Kompilace proběhne v pořádku, ale jakmile program spustím a vložím do něj atom c, tak se mi furt neustále opakuje znova a znova volání první funkce io:read().

Moje verze Erlangu je Erlang/OTP 17 [erts-6.3] [64-bit] [smp:4:4] [async-threads:10]

Kód: [Vybrat]
-module(temperature).
-export([run/0, convert/2]).

run() ->
run(true).

run(true) ->
{ok, Choice} = io:read("Convert to degrees Celsius or convert to degrees Fahrenheit? c/f :"),
{ok, Temp} = io:read("Insert temperature: "),
{UnitTemp, Convert} = convert(Choice, Temp),
io:format("The converted temperature: ~f ~s\n", [Convert, UnitTemp]),
{ok, Continue} = io:read("New temperature? true/false :"),
run(Continue);

run(false) ->
ok.

convert(c, Fahrenheit) -> {'Celsius', 5 * (Fahrenheit - 32) / 9};
convert(f, Celsius) -> {'Fahrenheit', 9 * Celsius / 5 + 32}.


Ja

Re:Divné chování Erlangu
« Odpověď #1 kdy: 31. 01. 2015, 14:52:50 »
Nikdo neví?  :(

Re:Divné chování Erlangu
« Odpověď #2 kdy: 31. 01. 2015, 15:43:25 »
io:read čte termy, které musí být ukončené tečkou:

Kód: [Vybrat]
Eshell V6.3  (abort with ^G)
1> c(temperature).
{ok,temperature}
2> temperature:run().
Convert to degrees Celsius or convert to degrees Fahrenheit? c/f :c.
Insert temperature: 12.2.
The converted temperature: -11.000000 Celsius
New temperature? true/false :true.
Convert to degrees Celsius or convert to degrees Fahrenheit? c/f :

Ten výpočet máš ale asi blbě, ne? ;)

P.S. pokud začínáš, zkus spíš jazyk Elixir, bude to příjemnější zážitek.

Re:Divné chování Erlangu
« Odpověď #3 kdy: 31. 01. 2015, 15:47:27 »
Ten výpočet máš ale asi blbě, ne? ;)
A ne, nemáš, sorry.