小编use*_*344的帖子

如何初始化堆上的结构的const成员

我想在堆上分配一个结构,初始化它并从函数返回一个指向它的指针.我想知道在这种情况下我是否有办法初始化结构的const成员:

#include <stdlib.h>

typedef struct {
  const int x;
  const int y;
} ImmutablePoint;

ImmutablePoint * make_immutable_point(int x, int y)
{
  ImmutablePoint *p = (ImmutablePoint *)malloc(sizeof(ImmutablePoint));
  if (p == NULL) abort();
  // How to initialize members x and y?
  return p;
}
Run Code Online (Sandbox Code Playgroud)

我应该从中得出结论,在包含const成员的堆上分配和初始化结构是不可能的?

c

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

如何创建一定范围内的类型

我想创建一个新的积分类型,它被限制在一定范围内.我试过了:

data PitchClass = PC Int deriving (Ord, Eq, Show)

instance Bounded PitchClass where
  minBound = PC 0
  maxBound = PC 11
Run Code Online (Sandbox Code Playgroud)

然而,我想要的是如果有的话会失败

PC 12
Run Code Online (Sandbox Code Playgroud)

要么

PC (-1)
Run Code Online (Sandbox Code Playgroud)

被尝试了.

对于您希望在创建新类型的情况下放置约束的情况的一般方法,其中值构造函数不从模块导出,而是返回类型实例和执行约束检查的函数被导出?

haskell types typeclass

18
推荐指数
2
解决办法
4593
查看次数

为什么苹果酒找到了错误的cider-nrepl版本,我该如何解决?

我今天刚刚通过el-get安装了苹果酒.当我在emacs中启动苹果酒时,会打印以下横幅:

; CIDER 0.8.0-snapshot (Java 1.7.0_65, Clojure 1.6.0, nREPL 0.2.6)
WARNING: The following required nREPL ops are not supported: 
eldoc ns-list ns-vars undef
Please, install (or update) cider-nrepl 0.8.0-snapshot and restart CIDER
WARNING: CIDER's version (0.8.0-snapshot) does not match cider-nrepl's version (0.7.0)
user> 
Run Code Online (Sandbox Code Playgroud)

我可以在苹果酒中运行我的单元测试,但很多其他的东西都不起作用,比如文档查找等.请注意,提示也在用户名称空间中,而不是项目名称空间.

我的〜/ .lein/profiles.clj

{:user 
 {:plugins 
  [[cider/cider-nrepl "0.7.0"]]}
}
Run Code Online (Sandbox Code Playgroud)

我看到lein下载了所需内容(然后是一些,奇怪的是):

$ find ~/.m2 -name "*nrepl*"
~/.m2/repository/cider/cider-nrepl
~/.m2/repository/cider/cider-nrepl/0.8.0-SNAPSHOT/cider-nrepl-0.8.0-20140914.152356-14.jar.sha1
~/.m2/repository/cider/cider-nrepl/0.8.0-SNAPSHOT/cider-nrepl-0.8.0-20140914.152356-14.pom
~/.m2/repository/cider/cider-nrepl/0.8.0-SNAPSHOT/cider-nrepl-0.8.0-20140914.152356-14.jar
~/.m2/repository/cider/cider-nrepl/0.8.0-SNAPSHOT/cider-nrepl-0.8.0-20140914.152356-14.pom.sha1
~/.m2/repository/cider/cider-nrepl/0.8.0-SNAPSHOT/cider-nrepl-0.8.0-SNAPSHOT.pom
~/.m2/repository/cider/cider-nrepl/0.8.0-SNAPSHOT/cider-nrepl-0.8.0-SNAPSHOT.jar
~/.m2/repository/cider/cider-nrepl/0.7.0/cider-nrepl-0.7.0.jar.sha1
~/.m2/repository/cider/cider-nrepl/0.7.0/cider-nrepl-0.7.0.pom.sha1
~/.m2/repository/cider/cider-nrepl/0.7.0/cider-nrepl-0.7.0.jar
~/.m2/repository/cider/cider-nrepl/0.7.0/cider-nrepl-0.7.0.pom
~/.m2/repository/org/clojure/tools.nrepl
~/.m2/repository/org/clojure/tools.nrepl/0.2.6/tools.nrepl-0.2.6.pom.sha1
~/.m2/repository/org/clojure/tools.nrepl/0.2.6/tools.nrepl-0.2.6.pom
~/.m2/repository/org/clojure/tools.nrepl/0.2.6/tools.nrepl-0.2.6.jar.sha1
~/.m2/repository/org/clojure/tools.nrepl/0.2.6/tools.nrepl-0.2.6.jar
Run Code Online (Sandbox Code Playgroud)

我也看到lein想要引入cider-nrepl和tools.nrepl,虽然我当然不明白为什么:

$ lein deps :tree
warn
 [cider/cider-nrepl …
Run Code Online (Sandbox Code Playgroud)

emacs clojure cider nrepl

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

标签 统计

c ×1

cider ×1

clojure ×1

emacs ×1

haskell ×1

nrepl ×1

typeclass ×1

types ×1