我对函数式编程中使用的monads和arrow的概念非常熟悉。 我也明白,他们可以用来解决类似的问题。 不过,在任何情况下如何select使用哪一个,我还是有点困惑。 我应该什么时候使用monads,什么时候应该使用箭头?
如何向Haskell专家解释Scala的types系统? Scala的优势是什么? 如何将Haskell的types系统解释为高级的Scala实践者? 在Haskell中可以做什么不能在Scala中完成?
我需要一个函数获取两个Int ( a和b )并将A/B作为Int返回。 我相信A/B总是一个整数。 这是我的解决scheme: myDiv :: Int -> Int -> Int myDiv ab = let x = fromIntegral a y = fromIntegral b in truncate (x / y) 但是想find更简单的解决scheme。 像这样的东西: myDiv :: Int -> Int -> Int myDiv ab = a / b 我如何将Int分解为Int并获得Int?
Hoogle允许您通过函数名称或近似types签名来search许多标准的Haskell库。 我觉得它非常有用。 Hoogle for Scala有什么特点吗? ScalaDoc 2中的search只能按名称查找types和包。
在我的~/.cabal/config在新的机器上安装了一大堆软件包之前,我忘了启用构build库来分析,现在,一个–reinstall world试图解决这个问题,这一切都是自然而然的。 我认为这是更好地利用我的时间来清除一切。 我如何正确地做到这一点?
我是Haskell的新手,我正在阅读函数和应用函子。 好吧,我理解仿函数,我如何使用它们,但我不明白为什么应用仿函数是有用的,我怎样才能在Haskell中使用它们。 你能用一个简单的例子来解释我为什么需要应用函子吗?
我一直在检查整数gmp源代码,以了解如何外国的primops可以实现在cmm方面logging在GHC Primops页面 。 我知道使用llvm hack或者fvia-C / gcc来实现它们的技术 – 这对我来说更加了解了interger-gmp库使用的第三种方法。 于是,我在MSFT页面上查了CMM教程(pdf链接) ,通过了GHC CMM页面 ,仍然有一些没有回答的问题(很难将所有这些概念保存在CMM中,而这正是我现在所做的)。 有这个代码片段从整数bmp cmm文件 : integer_cmm_int2Integerzh (W_ val) { W_ s, p; /* to avoid aliasing */ ALLOC_PRIM_N (SIZEOF_StgArrWords + WDS(1), integer_cmm_int2Integerzh, val); p = Hp – SIZEOF_StgArrWords; SET_HDR(p, stg_ARR_WORDS_info, CCCS); StgArrWords_bytes(p) = SIZEOF_W; /* mpz_set_si is inlined here, makes things simpler */ if […]
简短而甜美:我看到有几位消息人士在谈论“超级编译”。 但是我还没有在互联网的任何地方find一个单一的文件来描述这是什么 。 据推测,因为它似乎很简单,谁也不值得解释。 有人知道这究竟是什么吗?
当我尝试使用Haskelltypes并尝试获得类似的结果时, $ ghci … Prelude> :k (->) (->) :: ?? -> ? -> * Prelude> 而不是预期的* -> * -> * 。 什么是?? 和? 事情呢? 它们是指具体types还是“类variables”? 或者是其他东西?
我试图了解点运算符在这个Haskell代码中做了什么: sumEuler = sum . (map euler) . mkList 整个源代码如下。 我的理解 点运算符将两个函数sum和map euler mkList的结果以及mkList的结果作为input。 但是, sum不是函数,它是函数的参数,对吗? 那么这里发生了什么? 另外, (map euler)在做什么? 码 mkList :: Int -> [Int] mkList n = [1..n-1] euler :: Int -> Int euler n = length (filter (relprime n) (mkList n)) sumEuler :: Int -> Int sumEuler = sum . (map euler) […]