Как упражнение по функциональному программированию, я думал, что напишу небольшую программу для ранжирования рецептов изготовления в mmo по прибыльности.Упражнение функционального программирования
В языке OO я бы создал объекты стратегии для каждого рецепта, в качестве членов которого были Cost(), ExpectedRevenue() и Volume(). Затем я помещал все объекты в список и сортировал их с помощью функции доходности/времени.
Попытка выполнить тот же результат в F #, но я не уверен, как это сделать. У меня есть некоторые разрозненные функции затрат, например:
let cPM (ss,marble) = (15.0 * ss + 10.0 * marble + 0.031)/5.0
let cTRef (tear,clay) = (tear + 10.0 * clay + 0.031)/5.0
, а затем доходы и объем определения как:
let rPM = 1.05
let vPM = 50
, но я не уверен, что теперь делать. Составьте список кортежей, которые выглядят так:
(name: string, cost:double, revenue:double, volume:int)
, а затем отсортировать список? Мне кажется, что я что-то упускаю - все еще думая в ОО, не говоря уже о добавлении новых рецептов таким образом, будет довольно неудобно.
Есть ли у кого-нибудь советы по использованию функциональных концепций лучше? Казалось, что этот тип проблем с расчетом будет подходящим для функционального стиля.
Большое значение.
Хороший способ определить проблемную область, безусловно, отсутствовал в том, что я пробовал до сих пор. Не уверен, что я следую, как использовать функцию соответствия, или роль 'g' и' s'. Не количество ('2.0',' 15.0') и цены ('prices.Gold',' prices.Steel') уже присутствуют в лямбда для FancySword? Игра Blade and Soul, btw :) – Osan
Да, мое понимание проблемы немного ограничено :-). Моя идея состоит в том, что есть некоторые параметры рецепта (вам нужно некоторое количество ног лягушек для создания магического камня), а затем у вас есть глобальная ценность золота в игре (что происходит от «Цены»). Если стоимость не зависит от внешних цен, то вы можете поместить всю информацию в случаях «Рецепт» - это, вероятно, в вашем примере. –