首先,我正在阅读的真实世界Haskell表示永远不会使用foldl而是使用foldl'.所以我相信它.
但我对什么时候使用foldrvs. 朦胧foldl'.虽然我可以看到他们如何以不同的方式摆放在我面前的结构,但是当"哪个更好"时,我太愚蠢了.我想在我看来似乎并不重要,因为它们都产生相同的答案(不是吗?).事实上,我以前使用这个结构的经验来自Ruby inject和Clojure reduce,它们似乎没有"左"和"右"版本.(附带问题:他们使用哪个版本?)
任何有助于像我这样的智能挑战的洞察力都会非常感激!
对于那些在Haskell和一些Lisp中都有经验的人,我很好奇是如何"愉快"(使用一个可怕的术语)是在Haskell和Lisp中编写代码.
一些背景:我学习Haskell现在,稍早有计划和CL(和一点点进军Clojure的)工作.传统上,你可以认为我是动态语言的粉丝,因为它们提供了简洁和快速.我很快就爱上了Lisp宏,因为它给了我另一种避免冗长和样板的方法.
我发现哈斯克尔难以置信的有趣,因为它把我介绍给编码我不知道的方式.它肯定有一些方面似乎有助于实现敏捷性,比如易于编写部分功能.不过,我有点担心失去Lisp的宏(我假设我失去他们,说实话我可能只是没有了解他们吗?)和静态类型系统.
会有人谁做了两个世界编码,像样的数目介意评论经验如何不同,您喜欢哪一种,如果说偏好的态势?
你如何在Applicative类型类中发音这些函数:
(<*>) :: f (a -> b) -> f a -> f b
(*>) :: f a -> f b -> f b
(<*) :: f a -> f b -> f a
Run Code Online (Sandbox Code Playgroud)
(也就是说,如果他们不是运营商,他们会被称为什么?)
作为旁注,如果你可以重命名pure为对非数学家更友好的东西,你会怎么称呼它?
首先,我承认这个问题可能是重复的; 请告诉我
我很好奇当需要可变性时,对于那些情况,一般的"最佳实践"是什么.F#似乎为此提供了两种工具:let mutable绑定,它似乎像"大多数"语言中的变量一样工作,而参考单元(使用ref函数创建)需要显式解除引用才能使用.
有一对夫妇的情况下,其中一个是"被迫"转化为一种或另一种:.NET互操作倾向于使用可变带<-,并在工作流程的计算必须使用ref带:=.所以这些案例非常明确,但我很好奇在这些场景之外创建自己的可变变量时该怎么做.一种风格比另一种风格有什么优势?(也许对实施的进一步了解会有所帮助.)
谢谢!
F#编译器似乎以(相当)严格的从上到下,从左到右的方式执行类型推断.这意味着您必须执行诸如在使用之前放置所有定义,文件编译的顺序很重要,并且您倾向于需要重新排列内容(通过|>或有什么)以避免使用显式类型注释.
如何使这更灵活,并且计划用于F#的未来版本有多难?显然它可以完成,因为Haskell(例如)没有这种限制同样强大的推理.F#的设计或意识形态是否有任何本质上的不同?
inline在我看来,F#中的关键字与我在例如C中使用的目的有些不同.例如,它似乎影响函数的类型(什么是"静态解析的类型参数"?不是所有的F#类型静态解决?)
我inline什么时候应该使用功能?
最近遇到了这个关于Factor的介绍,我有点好奇了解更多.除了那里提到的官方常见问题解答之外,你是否有资源学习这门语言(以及基于堆栈的"范例",如果这是正确的话),你发现它有用吗?
作为旁注,会学习Forth帮助,还是将C与Python(或者你有什么)进行比较?
我的emacs(在Windows上)总是以设定的大小启动,这个规模相当小,如果我调整大小,它就不会在下次启动时"记住".
我一直在玩以下内容:
(set-frame-position (selected-frame) 200 2) ; pixels x y from upper left
(set-frame-size (selected-frame) 110 58) ; rows and columns w h
Run Code Online (Sandbox Code Playgroud)
当我在暂存缓冲区中执行它时,它完全有效.我把它放在我的.emacs中,虽然现在当我启动程序时,我可以看到帧临时设置为该大小,在*scratch*加载时,它会再次重置为小默认值.
任何人都可以帮我修复上面的代码,以便它"坚持"启动?
关于数学和编程之间的关系,以及一个是否是另一个的子集等,已经在本网站上进行了讨论.
在我最近的编程研究中,我发现自己越来越希望自己在数学方面做得更好.你们都知道编程书籍开始用数学方式概括某些东西时的情景("因此,我们可以说这一点<some single letter>,<lots of letters>").在这种情况下,我的眼睛茫然.我知道这主要是因为我很愚蠢,但似乎如果我能提高自己更高的数学技能,也许我可以从这些事情中获得更多.
主要问题:数学确实是一个可以"变得更好"的东西,或者你的大脑是否适合或不接受?
重要的后续问题:如果上述答案是肯定的,那么有什么方法可以解决这个问题?