Я занимаюсь F # в Visual Studio 2010. Я разработчик с большим опытом разработки кода и архитектуры в объектно-ориентированных языках, таких как С# и 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()
Мои вопросы: что я сделал хорошо в этом сценарии? Какие части можно было бы сделать лучше?
Я действительно с нетерпением жду некоторых идей, и я очень рад тому, что знаком с функциональными парадигмами!:)
Заранее спасибо