On 26.07.2017 11:45, Timon Gehr wrote:
On 26.07.2017 04:37, Seb wrote:
On Tuesday, 25 July 2017 at 21:13:54 UTC, Max Haughton wrote:
Semi-Functional/pure RPN calculator: https://run.dlang.io/is/JGkBZx

This is probably too long, but it demonstrates the compiler enforced safety and purity (State is passed through the fold), while also showing off the higher level parts of Phobos (Use of fold).

Max, this is a great example!
However, as you noticed it's a bit long and in fact in its current state it wouldn't look good:

http://imgur.com/a/KwczM

If there's no chance to make it shorter,

import std.stdio, std.string, std.algorithm, std.conv;
void main(){
     readln.split.fold!((stack,op){
         switch(op){
             static foreach(c;"+-*/") case [c]:
                 return stack[0..$-2]~mixin("stack[$-2] "~c~" stack[$-1]");
             default: return stack~op.to!real;
         }
     })((real[]).init).writeln;
}


(Sorry for the double post. Internet connection problem.)

Reply via email to