小编Dra*_*gno的帖子

即使未声明它们,也在C中使用struct指针

#include <stdlib.h>

struct timer_list
{
};

int main(int argc, char *argv[])
{
  struct foo *t = (struct foo*) malloc(sizeof(struct timer_list));
  free(t);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么上面的代码段编译(在gcc中)并且在我没有定义foo结构时没有问题?

c struct pointers

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

Haskell是否支持类型类的匿名实例?

我在F#中有以下代码(它来自一本书)

open System.Collections.Generic

type Table<'T, 'U> =
   abstract Item : 'T -> 'U with get
   abstract Discard : unit -> unit

let memoizeAndPermitDiscard f =
     let lookasideTable = new Dictionary<_, _>(HashIdentity.Structural)
     {new Table<'T, 'U> with
      member t.Item
         with get(n) =
             if lookasideTable.ContainsKey(n) then
                 lookasideTable.[n]
             else
                 let res = f n
                 lookasideTable.Add(n, res)
                 res
      member t.Discard() = 
           lookasideTable.Clear()}
let rec fibFast =
     memoizeAndPermitDiscard (fun n ->  
     printfn "computing fibFast %d" n
     if n <= 2 then 1 else fibFast.[n - 1] …
Run Code Online (Sandbox Code Playgroud)

haskell

1
推荐指数
2
解决办法
182
查看次数

如何在 Elm 0.19 中监听全局鼠标事件?

要在 Elm 中侦听 HTML 元素上的鼠标事件,我们可以使用Html.Events.onClick。但是,我想在文档的任何地方监听鼠标点击。

我找到了elm-lang/mouse提供Mouse.clicks的包,它似乎就是为此而设计的。在 Elm 0.18 上,可以这样安装:

elm-package install elm-lang/mouse
Run Code Online (Sandbox Code Playgroud)

并像这样导入:

import Mouse exposing (clicks)
Run Code Online (Sandbox Code Playgroud)

但是在 Elm 0.19 上,命令

import Mouse exposing (clicks)
Run Code Online (Sandbox Code Playgroud)

不起作用:

以下软件包目前不适用于 Elm 0.19.0:

elm-lang/mouse
Run Code Online (Sandbox Code Playgroud)

控制台输出中没有给出原因。该文档似乎没有表明该模块在 0.19 版本中发生了任何变化。

如何安装模块?或者,我如何使用 Elm 的标准库来全局(在文档上)监听鼠标点击?

onclick mouseevent elm

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

Wolfram Alpha如何在不到一秒的时间内计算出2305843008139952128的除数?

我试图找到一个巨大整数的除数我在Haskell中提出了一个问题,但Haskell还不够快.我把上面的数字放在Wolfram Alpha中,结果是立竿见影的.怎么做的?

wolframalpha

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

使用Haskell将factorial写为命令函数

我在Haskell中编写了以下代码:

import Data.IORef
import Control.Monad
import Control.Monad.Trans.Cont
import Control.Monad.IO.Class
fac n = do
          i<-newIORef 1
          f<-newIORef 1
          replicateM_ n $ do
            ri<-readIORef i
            modifyIORef f (\x->x*ri)
            modifyIORef i (+1)
          readIORef f
Run Code Online (Sandbox Code Playgroud)

这是非常好的代码,它将factorial实现为命令式函数.但是replicateM_无法完全模拟真实for循环的使用.所以我尝试使用continuation创建一些东西,但我在这里失败的是我的代码:

ff = (`runContT` id) $ do
       callCC $ \exit1 -> do
         liftIO $ do
           i<-newIORef 1
           f<-newIORef 1
         callCC $ \exit2 -> do
           liftIO $ do 
             ri<-readIORef i
             modifyIORef (\x->x*ri)
             modifyIORef i (+1)
             rri<-readIORef i
             when (rri<=n) $ exit2(())
         liftIO $ do
           rf<-readIORef f
           return rf
Run Code Online (Sandbox Code Playgroud)

你能帮我纠正我的代码吗?谢谢

continuations haskell monad-transformers

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

舍入和相等之间有什么关系?

我知道,为了检查两个双精度数之间的相等性,您必须使用数字之间的绝对差,并将此差值与小于 1 且大于零的数字进行比较。这是最简单的方法,因为还有更复杂的方法。我的一位同事说,例如,如果您使用 Math.Round 表示 2 个小数位,则可以使用精确相等,而无需使用上述方法。例如,如果你有号码double x;和号码,double y;你可以写

double x1=Math.Round(x,2);
double y1=Math.Round(y,2);
if(x1 == y1)
 {
    //do something
 }
Run Code Online (Sandbox Code Playgroud)

我认为这不是真的。但你能告诉我为什么这是对还是错?

c# ieee-754

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