如何在GHCi中定义此函数的等价物(取自learnyouahaskell)?
import Data.List
numUniques :: (Eq a) => [a] -> Int
numUniques = length . nub
Run Code Online (Sandbox Code Playgroud)
如果没有类型声明,GHCi会接受函数定义,但最终会出现无用的类型:
Prelude Data.List> import Data.List
Prelude Data.List> let numUniques' = length . nub
Prelude Data.List> :t numUniques'
numUniques' :: [()] -> Int
Run Code Online (Sandbox Code Playgroud)
结果函数仅接受单位列表作为参数.
有没有办法在GHCi中提供类型声明?或者是否有另一种方法来定义这些不需要类型声明的函数?
我在GHCi指南中没有看到明显的线索,并尝试了以下表达式(无济于事):
> let numUniques' = ((length . nub) :: (Eq a) => [a] -> Int)
> :t numUniques'
numUniques' :: [()] -> Int
Run Code Online (Sandbox Code Playgroud) 是否有任何可用的开源工具支持通过参数类型集和返回类型搜索Java方法?
举个例子,假设我正在寻找一种为int数组生成哈希码的方法.我搜索一个采用int []参数并返回int的方法:
int[] -> int
Run Code Online (Sandbox Code Playgroud)
生产
java.util.Arrays#hashCode(int[])
...
Run Code Online (Sandbox Code Playgroud)
或者我可能想要找到一个方法,它接受一个字符串,并替换字符,并将字符替换为.所以我搜索匹配的方法:
String, char, char -> String
Run Code Online (Sandbox Code Playgroud)
生产
java.lang.String#replace(char, char)
...
Run Code Online (Sandbox Code Playgroud)
理想情况下,我喜欢Java等同于Haskell的Hoogle,它支持通过类型签名搜索功能.
我期待这个工具:
我知道许多IDE支持搜索获取或返回给定类型的方法,但尚未看到通过参数类型和返回类型的组合来缩小搜索范围的工具.
如何在Perl6中执行外部命令并捕获其输出?
Perl5风格的后退功能似乎不起作用:
> my $results = `ls`;
Confused at line 1, near "my $results"
Run Code Online (Sandbox Code Playgroud)
概要16记录了run方法,但是它返回退出状态而不是stdout的输出.
我正在使用Rakudo实现(rakudo-star-2010.12).
所述FC++库提供一个有趣的方法在C++支撑功能的编程的概念.
FAQ中的一个简短示例:
take (5, map (odd, enumFrom(1)))
Run Code Online (Sandbox Code Playgroud)
FC++似乎从Haskell中获得了很多灵感,从而重用了Haskell前奏中的许多函数名称.
我已经看过最近一篇关于它的文章,并且在stackoverflow的一些答案中已经简要地提到过,但我无法在野外找到它的任何用法.
是否有任何开源项目积极使用FC++?或者过去使用它的任何项目历史?或者有人有个人经验吗?
网站上有一个客户部分,但唯一的活动链接是同一作者的另一个库(LC++).
作为背景:我正在寻找使用现有C++ API编写低延迟音频插件,我正在寻找允许我以功能样式编写简洁代码的工具.对于这个项目,我不想使用C++库而不是使用单独的语言,以避免引入FFI绑定(因为复杂性)或垃圾收集(以保持亚毫秒范围内的延迟上限).
我知道STL和Boost库已经提供了许多FP概念的支持 - 这可能是一种更实用的方法.我也知道其他有用的方法来生成功能语言的代码生成音频DSP代码,例如FAUST项目或Haskell 合成器包.
Java语言规范定义了第17.5节中最终字段的语义:
最终字段的使用模型很简单.在该对象的构造函数中设置对象的最终字段.在对象的构造函数完成之前,不要在另一个线程可以看到的位置写入对正在构造的对象的引用.如果遵循此原因,那么当另一个线程看到该对象时,该线程将始终看到该对象的最终字段的正确构造版本.它还将看到那些最终字段引用的任何对象或数组的版本,这些字段至少与最终字段一样是最新的.
我的问题是 - '最新'保证是否扩展到嵌套数组和嵌套对象的内容?
简而言之:如果一个线程将可变对象图分配给对象中的最终字段,并且对象图永远不会更新,那么所有线程都可以通过最终字段安全地读取该对象图吗?
示例场景:
在这种情况下,线程B看到的ArrayList的成员是否保证至少与MyClass的构造函数完成时一样最新?
我正在寻找澄清Java内存模型和语言规范的语义,而不是像同步这样的替代解决方案.我的梦想答案是肯定或否定,并参考相关文字.
更新:
我想使用CoffeeScript 为Google Apps脚本编写Javascript脚本,而且我无法以预期的形式生成函数.
Google Apps脚本希望脚本包含顶级命名函数.(我可能使用了错误的术语,所以我将用例子说明我的意思......)
例如,Google Apps脚本可以很好地识别此功能:
function triggerableFunction() {
// ...
}
Run Code Online (Sandbox Code Playgroud)
...虽然这个函数不是(它会解析,但你不会触发它):
var nonTriggerableFunction;
nonTriggerableFunction = function() {
// ...
};
Run Code Online (Sandbox Code Playgroud)
我发现使用CoffeeScript,我能得到的最接近的是nonTriggerableFunction上面的表格.生成triggerableFunction如上所述的命名函数的最佳方法是什么?
我已经在使用'bare'选项(-b开关),在没有顶级功能安全包装的情况下进行编译.
我在网上找到的一个结合了CoffeeScript和Google App Script的项目是Gmail GTD Bot,它似乎是使用反向标记的组合,并要求用户从结果代码中手动删除一些行.(请参阅脚本末尾和README的"安装"部分).我希望有一个更简单,更清洁的解决方案.
我想知道是否有办法在任何符合POSIX标准的shell中获得自UNIX纪元以来的秒数,而无需使用perl之类的非POSIX语言,或使用非POSIX扩展(如GNU awk的strftime函数).
以下是我已经排除的一些解决方案......
date +%s//不适用于Solaris
我见过一些shell脚本 建议之前,其解析输出date,然后获得从格式化的公历日期秒,但他们似乎并没有采取像闰秒细节考虑在内.
GNU awk具有该strftime功能,但这在标准中不可用awk.
我可以编写一个调用该time函数的小型C程序,但该二进制文件将特定于特定的体系结构.
是否有使用POSIX兼容工具的跨平台方式?
我很想放弃并接受对perl的依赖,这至少是广泛部署的.
perl -e'print time'//作弊(非POSIX),但应该适用于大多数平台