小编Tom*_*vin的帖子

Prelude中是否有一个函数将值与应用于函数的值配对?

我正在寻找一个类似于此的函数:

withSelf :: (a -> b) -> a -> (a, b) withSelf f x = (x, f x)

我和Hoogle一起搜索过这样的功能; 我搜索(a -> b) -> a -> (a, b)a -> (a -> b) -> (a, b),这两者都不是决定性的.该Hackage页面上Data.Tuple没有什么我找的那么多.

我知道编写它是微不足道的,但我想在可能的情况下编写惯用的Haskell,并避免重新发明轮子.

haskell haskell-prelude

6
推荐指数
2
解决办法
108
查看次数

当定义不是const时,将extern全局视为const是否有效?

假设我有一个编译单元file1.c,它声明了一个文件范围变量,如下所示:

int my_variable = 12;
Run Code Online (Sandbox Code Playgroud)

然后,在另一个编译单元file2.c中,我为该变量创建了一个extern声明,但声明为const:

extern const int my_variable;
Run Code Online (Sandbox Code Playgroud)

这将使用gcc编译并正常工作-Wall -Wextra -ansi -pedantic.但是,C89标准规定要使两种合格类型兼容,两者都应具有相同类型的兼容类型.添加const到声明会增加限制而不是避免限制.这是安全有效的C吗?使用头文件设置它的最佳做法是什么?

c standards standards-compliance c89

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