最近在西雅图F#小组期间,我被问到怎样用F#来做windows phone calculator。若是你知道F#,它并不难。
计算器的骨干就是一个字符串解析器。它能被从头开始写或者用已有的东西来写。既然我想投入生产而不是准备一个面试,那么我选择使用F# powerpack提供的已有的yacc解析器。如果我把前后端的yacc分析器结合起来,大部分工作就完成了,余下的就是去补下你的yacc\lex知识。我选择使用C#XNA作为前端,因为待会我想画函数图像,担心Silverlight不能满足我的需求。你能使用F# XNA作为前端,但这不是主要的话题。
整个解决方案有4个项目。两个XNA标准项目和两个 F#项目。Calculator文件夹包含yacc\lex文件。我使用F# Parserd Language Starter创建项目。这个项目是桌面应用程序,你必须通过增加import元素来修改项目文件:
XNA项目设置:
最重要的是保证对 Windowphone项目引用 FSharp.Core.dll。
它们被放在"Dependencies"文件夹下。
如果你去WindowsPhoneCalculator项目,在Game.cs里找下面的行
var r =Calculator.readAndProcess("1+3*2");
如果你停在那行,r是7。全部的代码在这里。
译文出处:http://apollo13cn.blogspot.com/2012/03/f-on-windows-phone-graphic-calculator.html