标签: functional-programming

在函数式编程中什么是"currying"?

写作一个未经重构的命令和OO程序员......

最近和Erlang以及Haskell搞砸了.我喜欢Erlang,还不确定Haskell.功能似乎更像数学而不是编程,希望有意义.功能编程似乎非常强大.

阅读关于互动函数编程的文档我经常遇到"currying"这个词.我似乎只找到了一些有点过头的文档 - 很多术语都没有定义.

什么是currying?

我已经找了类似的已经发布的问题,但没有找到任何东西,所以请随意指出我已建立的线程.

functional-programming currying

43
推荐指数
0
解决办法
1万
查看次数

最酷的C#LINQ/Lambdas技巧你曾经拉过吗?

看到一篇关于C#中隐藏功能的帖子,但很多人都没有写过linq/lambdas的例子......所以......我想知道......

你见过/写过的C#LINQ和/或Lambdas /匿名代表的最酷(最优雅)是什么?

奖金,如果它也投入生产!

c# linq lambda functional-programming

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

功能语言本身就很慢吗?

为什么功能语言总是在基准测试中落后于C?如果你有一个静态类型的函数式语言,在我看来它可以被编译成与C相同的代码,或者甚至更优化的代码,因为编译器可以使用更多的语义.为什么看起来所有函数式语言都比C慢,为什么它们总是需要垃圾收集和过度使用堆?

有没有人知道适用于嵌入式/实时应用程序的功能语言,其中内存分配保持在最低限度并且生成的机器代码是精简和快速的?

functional-programming compilation

42
推荐指数
8
解决办法
1万
查看次数

功能编程最好/最差的问题是什么?

我经常听说函数式编程解决了许多在程序/命令式编程中难以解决的问题.但我也听说过程序编程自然很擅长的其他一些问题并不是很好.

在我打开关于Haskell的书并深入研究函数式编程之前,我至少想了解一下我能用它的基本概念(在本书的例子之外).那么,函数式编程擅长的是什么呢?它不适合的问题是什么?

更新

到目前为止,我已经得到了一些很好的答案.我迫不及待地开始学习Haskell - 我只需要等到我掌握C :)

函数式编程很棒的原因:

  • 非常简洁和简洁 - 它可以用简短的,未经过混淆的陈述表达复杂的想法.
  • 比命令式语言更容易验证 - 在系统安全至关重要的地方很好.
  • 函数的纯度和数据的不变性使得并发编程更加合理.
  • 非常适合脚本编写和编写程序(我很高兴知道为什么).
  • 数学相关的问题简单而精美地解决了.

函数式编程困难的领域:

  • 有争议的:网络应用程序(虽然我猜这取决于应用程序).
  • 桌面应用程序(虽然它可能取决于语言,F#会擅长这个不是吗?).
  • 任何性能至关重要的东西,比如游戏引擎.
  • 任何涉及大量程序状态的东西.

haskell functional-programming

42
推荐指数
4
解决办法
6817
查看次数

功能编程范例是否有可视化建模语言或风格?

UML是一个旨在用软件建模的标准,它将用OO语言编写,并与Java携手并进.它是否可能用于模拟软件的功能编程范式?鉴于嵌入的视觉元素,哪些图表将变得有用?

是否有针对函数式编程的建模语言,更具体地说是Haskell?你会推荐哪些工具来组合图表?

由OP于2009年9月2日编辑:

我正在寻找的是代码中发生的最直观,最轻的代表.易于遵循的图表,视觉模型不一定针对其他程序员.我很快就会在Haskell开发一款游戏,但由于这个项目是我的毕业结论工作,我需要介绍一下拟议解决方案的某种形式化.我想知道是否有相当于UML + Java标准,但对于Haskell.我应该坚持使用故事板,书面描述,非正式化的图表(一些浅的流程图图像),非正式的用例描述吗?

由jcolebrand编辑2012年6月21日:

请注意,提问者最初想要一个视觉元素,现在我们已经有三年了,我们正在寻找更多/更好的工具.原始答案都没有真正解决"视觉隐喻设计工具"的概念,所以......这就是新的赏金所要提供的.

modeling haskell programming-languages functional-programming

42
推荐指数
7
解决办法
6915
查看次数

在F#中的cons运算符(::)

F#中的::运算符始终将元素添加到列表中.是否有运营商附加到列表中?我猜是使用@运算符

[1; 2; 3] @ [4]

效率低于附加一个元素.

f# functional-programming

42
推荐指数
4
解决办法
2万
查看次数

是否有用于更新嵌套数据结构的Haskell习惯用法?

假设我有以下数据模型,用于跟踪棒球运动员,球队和教练的统计数据:

data BBTeam = BBTeam { teamname :: String, 
                       manager :: Coach,
                       players :: [BBPlayer] }  
     deriving (Show)

data Coach = Coach { coachname :: String, 
                     favcussword :: String,
                     diet :: Diet }  
     deriving (Show)

data Diet = Diet { dietname :: String, 
                   steaks :: Integer, 
                   eggs :: Integer }  
     deriving (Show)

data BBPlayer = BBPlayer { playername :: String, 
                           hits :: Integer,
                           era :: Double }  
     deriving (Show)
Run Code Online (Sandbox Code Playgroud)

现在让我们说经常是牛排狂热分子的经理想要吃更多的牛排 - 所以我们需要能够增加经理人饮食中的牛排含量.以下是此功能的两种可能实现:

1)这使用了大量的模式匹配,我必须得到所有构造函数的所有参数排序正确...两次.它似乎不会很好地扩展或者非常易于维护/读取.

addManagerSteak :: BBTeam -> BBTeam
addManagerSteak (BBTeam …
Run Code Online (Sandbox Code Playgroud)

haskell functional-programming static-typing clojure

42
推荐指数
3
解决办法
7233
查看次数

学习Haskell以学习Scala

我读了几个问题,比如Scala和Haskell讨论两种语言的优点或者要学习哪些,但我已经知道我想学习Scala.我是uni的Java程序员,现在主要使用PHP.

我想学习Scala,因为它看起来像个人项目的Java改进,我也想学习一种函数式语言来提高我作为程序员的知识.

我想知道将Haskell作为函数式编程的介绍是否是一个好主意,因为它纯粹是函数式的,所以我应该正确地学习它而不是偶然使用Scala中的一些函数而不知道为什么?

我也喜欢将Haskell用于个人项目等,因为它看起来很棒,但我并没有真正看到它的许多真实应用,似乎更多地用于学术事物,因此想要学习它以获得功能性理解然后继续斯卡拉

haskell functional-programming scala purely-functional

42
推荐指数
4
解决办法
3771
查看次数

仿函数和endofunctors之间的差异

有人可以简单地解释两者之间的区别吗?我并没有完全理解monad是endofunctor而不仅仅是functor的部分.

haskell functional-programming functor

42
推荐指数
1
解决办法
9755
查看次数

Swift中泛型和AnyObject之间的区别

考虑这个myFilter函数,它接受泛型参数并根据谓词过滤数组.这与filter()Swift提供的功能相同.

func myFilter<T>(source: [T], predicate:(T) -> Bool) -> [T] {
  var result = [T]()
  for i in source {
    if predicate(i) {
      result.append(i)
    }
  }
  return result
}
Run Code Online (Sandbox Code Playgroud)

这有什么不同,

func myFilter(source: [AnyObject], predicate:(AnyObject) -> Bool) -> [AnyObject] {
  var result = [AnyObject]()
  for i in source {
    if predicate(i) {
      result.append(i)
    }
  }
  return result
}
Run Code Online (Sandbox Code Playgroud)

即使在后一个例子中,我们也不是达到了泛型的地步吗?

functional-programming ios swift

42
推荐指数
2
解决办法
4390
查看次数