Tag: 函数式编程

在游戏开发中使用函数式编程的好资源?

我对这个函数式编程范例还很陌生,但到目前为止,我还是喜欢它。 由于我正在进行游戏开发,所以我想用纯function的编程风格来编写一些游戏。 我不介意这种语言 – 无论是Erlang,Haskell,Lisp,还是Ruby(我发现它支持函数式编程特性)。 那么很显然,要学习函数式编程(实际上是什么),最好的build议就是学习函数式语言并编写大量程序。 但是我正在寻找的是在游戏和游戏引擎(2D或3D)中使用函数式编程的一些资源。 那么,你是否知道任何函数式编程文章/书籍/博客/关于在实际游戏中使用它,或者使用函数式编程语言devise简单的游戏引擎,以及游戏和游戏引擎在这个function环境中的所有互动? 请不要像“刚开始编写简单的东西在function上开始,然后逐渐地find你”。 正如我刚才所说,这是显而易见的,但我在这里问的是一些关于这个话题的资源,如果有的话。 谢谢!

在Scala中def foo = {}和def foo()= {}有什么区别?

鉴于在Scala中定义一个函数的下列结构,你能解释一下这个区别是什么,它的含义是什么? def foo = {} 与 def foo() = {} 更新 感谢您的快速回复。 这些都很棒。 我唯一的问题是: 如果我省略括号,是否还有一种方法来传递函数呢? 这是我得到的repl: scala> def foo = {} foo: Unit scala> def baz() = {} baz: ()Unit scala> def test(arg: () => Unit) = { arg } test: (arg: () => Unit)() => Unit scala> test(foo) <console>:10: error: type mismatch; found : […]

C#中不可变的对象模式 – 你怎么看?

我已经在几个项目的过程中开发了一个创build不可变(只读)对象和不可变对象图的模式。 不可变对象具有100%线程安全的优点,因此可以跨线程重用。 在我的工作中,我经常在Web应用程序中使用这种模式来configuration设置,以及在内存中加载和caching的其他对象。 caching对象应该永远是不可变的,因为你想保证它们不会意外地改变。 现在,您可以轻松devise不可变对象,如下例所示: public class SampleElement { private Guid id; private string name; public SampleElement(Guid id, string name) { this.id = id; this.name = name; } public Guid Id { get { return id; } } public string Name { get { return name; } } } 这对于简单的类来说很好 – 但对于更复杂的类,我并不喜欢通过构造函数传递所有值的概念。 让属性上的setter更合乎需要,构造新对象的代码变得更容易阅读。 那么如何用setter创build不可变的对象呢? 那么,在我的模式中,对象首先是完全可变的,直到你用一个方法调用来冻结它们。 […]

考虑到unsafePerformIO,Haskell真的是一个纯函数式语言吗?

通常将Haskell引用为纯function语言的一个例子。 鉴于System.IO.Unsafe.unsafePerformIO的存在,如何certificate这一点? 编辑:我认为“纯粹function”是指不可能将不纯的代码引入到程序的function部分。

当我用Haskell编写*时发生了什么?

我正试图理解的结果 (*) . (+) 在Haskell。 我知道组合运算符只是math函数的标准组成 – 所以 (f . g) = f (gx) 但: (*) . (+) :: (Num (a -> a), Num a) => a -> (a -> a) -> a -> a 我正在努力理解这种types的签名。 我希望能够做到这样的事情: ((*) . (+)) 1 2 :: Num a => a -> a = (* (+ 1 2)) 是什么意思 […]

为什么民间故事和ramda如此不同?

通过阅读DrBoolean的书,我正在学习JavaScript FP。 我search了function性编程库。 我find了拉姆达和民间故事。 两者都声称是function性编程库。 但他们是如此不同: Ramda似乎包含了处理list的实用函数:map,reduce,filter和pure functions:curry,compose。 它不包含任何处理monad,functor的东西。 然而民间故事不包含任何列表或function的实用程序。 它似乎实现了一些代数结构在JavaScript像monad:也许,任务… 实际上我发现了更多的图书馆,它们似乎都属于这两个范畴。 下划线,lodash非常喜欢拉姆达。 幻想世界,无点幻想就像民间故事。 这两个非常不同的图书馆可以称为function ,如果是这样,是什么使每个图书馆function?

有没有人有任何启动function编程的build议?

我正在寻找一些电子书,这将有助于我学习函数式编程。 我还没有决定使用哪种语言,但是我注意到了在StackOverflow社区中对LISP,Haskell和F#的相当多的偏见。 到目前为止,我还不确定我将采取哪个方向,但任何人都可以推荐关于这个主题的任何特定的电子书? 另外,如果任何人都可以提出一个引人注目的论证,哪种function语言是最有趣的,那么我会很乐意听到你的意见。 我特别感兴趣的电子书,因为我设法给自己索尼电子书圣诞节电子书阅读器,我正在寻找加载与有用的材料为我的永无止境的追求成为一个更好的程序员。

过程式编程和函数式编程有什么区别?

我已经阅读了维基百科的程序编程和函数式编程文章 ,但我仍然有点困惑。 有人可以把它归结为核心?

cons运算符(::)在F#

F#中的::运算符总是将元素前置到列表中。 有附加到列表中的运算符吗? 我猜测使用@运算符 [1; 2; 3] @ [4] 效率会比追加一个元素低。

何时使用closures?

我已经看到closures的样本 – 什么是“closures”? 任何人都可以提供什么时候使用闭包的简单例子? 具体来说,closures有意义的场景? 假设语言没有closures支持,那么还会如何实现类似的事情呢? 不要冒犯任何人,请用c#,python,javascript,ruby等语言发布代码示例。 对不起,我还不懂function语言。