[your code here] Pure RPN calculator

Timon Gehr via Digitalmars-d digitalmars-d at puremagic.com
Wed Jul 26 02:46:45 PDT 2017


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.)


More information about the Digitalmars-d mailing list