我一直在Visual Studio 2010中尝试F#。作为一个有着C#和Java等面向对象语言的更多代码/架构设计经验的开发人员,我想拓展我的技能并尝试使用不同的语言来做不同的事情。特别是要通过使用函数式语言(在这种情况下是F#)正确编写代码。
一个简单的例子是生成一些XML,然后添加一些过滤器以消除某些元素。
这是我的代码:
open System
open System.Xml.Linq
let ppl:(string * string) list = [
("1", "Jerry");
("2", "Max");
("3", "Andrew");
]
/// Generates a Person XML Element, given a tuple.
let createPerson (id:string, name:string) = new XElement(XName.Get("Person"),
new XAttribute(XName.Get("ID"), id),
new XElement(XName.Get("Name"), name)
)
/// Filter People by having odd ID's
let oddFilter = fun (id:string, name:string) -> (System.Int32.Parse(id) % 2).Equals(1)
/// Open filter which will return all people
let allFilter = fun (id:string, name:string) -> true
/// Generates a People XML Element.
let createPeople filter = new XElement(XName.Get("People"),
ppl |> List.filter(filter) |> List.map createPerson
)
/// First XML Object
let XmlA = createPeople oddFilter
/// Second XML Object
let XmlB = createPeople allFilter
printf "%A\n\n%A" XmlA XmlB
/// Waits for a keypress
let pauseKey = fun () -> System.Console.ReadKey() |> ignore
pauseKey()
我的问题是:在这种情况下,我做得好的事情有哪些?有哪些部分可以做得更好?我真的很期待一些想法,也很兴奋能够熟悉函数式范例! :)
提前感谢。