相关疑难解决方法(0)

Haskell的代数数据类型

我正在努力完全理解Haskell的所有概念.

代数数据类型在哪些方面类似于泛型类型,例如在C#和Java中?它们有何不同?无论如何,他们有什么代数呢?

我熟悉通用代数及其环和字段,但我对Haskell的类型如何工作只有一个模糊的概念.

haskell types functional-programming algebraic-data-types data-structures

58
推荐指数
5
解决办法
2万
查看次数

努力使用纯函数式编程来解决日常问题

我今天在黑客新闻中看到这篇文章.我正在努力解决理解纯函数式编程如何帮助我抽象现实世界问题的相同问题.7年前,我从命令式转向OO编程.我觉得我已经掌握了它,它对我很有帮助.在过去的几年里,我在函数式编程中学到了一些技巧和概念,比如map和reduce,我也喜欢它们.我已经在我的OO代码中使用它们,并且对此感到满意,但是当抽象出一组指令时,我只能想到OO抽象来使代码更漂亮.

最近我一直在研究python中的一个问题,我一直在努力避免使用OO来解决它.在大多数情况下,我的解决方案看起来势在必行,我知道如果我使用OO,我可以让它看起来很干净.我想我会发布问题,也许功能专家可以提出一个美观和功能性的解决方案.如果必须,我可以发布我丑陋的代码,但不愿意.:)这是问题所在:

用户可以请求图像或图像的缩略图.如果用户请求图像的缩略图,但它尚不存在,请使用python的PIL模块创建它.还使用人类可读路径创建指向原始或缩略图的符号链接,因为原始图像名称是哈希码,而不是描述其内容.最后,重定向到该图像的符号链接.

在OO中,我可能会创建一个SymlinkImage基类,一个ThumbnailSymlinkImage子类和一个OriginalSymlinkImage子类.共享数据(在SymlinkImage类中)将是原始路径之类的东西.共享行为将创建符号链接.子类将实现一个名为'generate'的方法,该方法将负责创建缩略图(如果适用),并调用其超类来创建新的符号链接.

paradigms functional-programming

26
推荐指数
3
解决办法
5860
查看次数

总和或产品类型?

给定以下代数数据类型

scala> sealed trait Person
defined trait Person

scala> case class Boy(name: String, age: Int, x: String) extends Person
defined class Boy

scala> case class Girl(name: String, age: Int, y: Boolean) extends Person
defined class Girl
Run Code Online (Sandbox Code Playgroud)

注意 - 我知道它不是递归类型 - 不涉及递归。

那么,这是 aSum还是Product Type?为什么?

scala algebraic-data-types

5
推荐指数
1
解决办法
2105
查看次数