【发布时间】:2015-09-13 19:29:53
【问题描述】:
作为一个函数式编程练习,我想我会编写一个小程序来按盈利能力对 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)
然后对列表进行排序?感觉就像我错过了一些东西 - 仍然在 OO 中思考,更不用说以这种方式添加新配方会相当尴尬。
有任何提示可以更好地使用函数概念吗?看起来这种类型的计算问题很适合函数式。
非常感谢。
【问题讨论】: