小编use*_*784的帖子

F#和继承的建模

我的问题涉及如何在F#中以功能方式处理继承.为了稍微描述一下,我举一个简单的例子.假设我们想要建立一个由各种动物组成的世界.每种动物都与其他种类共享一些属性(例如名称,大小等).此外,每种类型都可能有其他的,其他人不共享(例如,儿童的数量与狗和猫相关,但不适用于蜘蛛).此外,可能存在与每种动物类型相关联的方法或功能,其对于两种动物类型可能相同或不同,即存在可能对于特定种类而言过度的默认实施方式.每种动物类型可以具有仅针对该类型定义的方法.

现在,在OOP世界中,这可能会导致抽象类具有公共属性和抽象方法,后面是为每种动物类派生的类.我不确定如何在F#中功能性地指定域模型.这里: 在F#中使用哪些,抽象类或接口?声称"惯用的F#代码使用与C#不同的可扩展点(例如将函数/接口作为参数),因此您不需要抽象类".

如果这是应该采用的方式,是否可以提供一些基本的例子呢?

至于我对此的进一步思考,我认为属性应该封装在某种结构中.那么,F#中这方面的大多数惯用结构都是记录.这是否意味着存在父记录,该记录应包括在对应于特定"子"的其他记录中,即组成而不是继承.然而,在我看来,这是一种既不惯用也不特别优雅的解决方法.

我认为如何在F#中建模继承的首选方法是有区别的联合.但是,这并不能解决共享属性和方法的问题.

在我看来,与上述类似的模型非常频繁,因为它们隐含在大多数企业应用程序中.因此,是否有任何建议如何以功能方式处理(例如上述链接建议的方式或任何其他建议)?或者我们是否应该说这不是一个可以使用功能方法轻松建模的域名?

谢谢.

polymorphism dsl inheritance f# functional-programming

7
推荐指数
1
解决办法
669
查看次数

WebSharper与Angular

Angular可以使用ui-router来定义状态,以便在应用程序中移动.例如,当仍然在一个页面上时,您可以在页面的左侧有列表视图,同时在右侧有详细视图.然后,每当您从左侧列表更改记录时,详细信息也会更改,但是,您仍然在同一页面中.是否有可能在WebSharper中,或者还有其他选项如何处理场景?

此外,angular具有模板(和指令)的概念.除其他外,这使得能够将本机html代码包装到模板中,并将其用作其他一些html页面中的指令的一部分.例如,可以使用像select2这样的javascript库.这也可能在WebSharper中,例如使用select2库吗?

f# web-frameworks websharper angularjs

4
推荐指数
1
解决办法
1096
查看次数

F# - 纯功能设计,而不是oop设计

我想创建一个由三个代理组成的简单"多代理"系统.对于每个代理程序,都会创建一个封装邮箱处理器的类型.所有代理(位置,id等)和函数(sendMessage,move)都有共同的属性,代理与邮箱处理器的实现(消息的处理方式)不同.此外,它们可能因特定代理商特有的其他功能而不同.每个代理还应该包含(作为其属性之一)其他代理的列表,它将向其发送消息.这是一个非常简单的模型,我计划在F#中使用邮箱处理器.

在OOP中,这意味着创建代理接口(或抽象类),并且所有特定代理都将使用自己的实现从此接口继承.

我知道OOP在F#中是可行的,但我宁愿坚持纯粹的功能设计.但是,在我看来,OOP是这种情况下最合适的方法.如果您能就功能(F#)设计给我任何想法,我会很高兴吗?谢谢.

f# domain-driven-design functional-programming

2
推荐指数
1
解决办法
1284
查看次数