为什么在ghci中我可以输入:
5.0 * (3 - 1)
> 10.0
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试在.hs文件中创建一个函数并将其加载到:
test :: Float -> Int -> Int -> Float
test a b c = a * (b - c)
Run Code Online (Sandbox Code Playgroud)
我遇到了错误?"无法将预期类型'Float'与推断类型'Int'匹配?我如何编写一个函数,它接受一个浮点和2个整数参数并对它们执行上述操作?
我正在使用ghci v6.12.1,如果这有所作为...
我的大部分编程经验都是使用C++.受到Bjarne Stroustrup 在这里的讲话的启发,我最喜欢的编程技术之一是"类型丰富"的编程; 开发新的健壮数据类型,不仅可以通过将功能包装到类型中来减少我必须编写的代码量(例如向量添加,而不是newVec.x = vec1.x + vec2.x; newVec.y = ...等,我们可以使用newVec = vec1 + vec2),但也会在编译时通过强类型系统揭示代码中的问题.
我在Python 2.7中进行的最近一个项目需要具有上限和下限的整数值.我的第一直觉是创建一个新的数据类型(类),它将具有与python中的普通数字相同的行为,但始终在其(动态)边界值内.
class BoundInt:
def __init__(self, target = 0, low = 0, high = 1):
self.lowerLimit = low
self.upperLimit = high
self._value = target
self._balance()
def _balance(self):
if (self._value > self.upperLimit):
self._value = self.upperLimit
elif (self._value < self.lowerLimit):
self._value = self.lowerLimit
self._value = int(round(self._value))
def value(self):
self._balance()
return self._value
def set(self, target):
self._value = target
self._balance()
def __str__(self):
return str(self._value)
Run Code Online (Sandbox Code Playgroud)
这是一个好的开始,但它需要像这样访问这些BoundInt类型的内容
x = …Run Code Online (Sandbox Code Playgroud) 我将为LLVM 2.9编写的LLVM插件(LLFI)移植到最新版本的LLVM/Clang.
在使用断言启用LLVM3.2构建测试我的插件时,我收到以下错误:
opt: /home/kzvr/ubc/llfi/llvm3/llvmsrc/lib/IR/Instructions.cpp:281:
void llvm::CallInst::init(llvm::Value*, llvm::ArrayRef<llvm::Value*>,
const llvm::Twine&): Assertion `(i >= FTy->getNumParams() ||
FTy->getParamType(i) == Args[i]->getType()) && "Calling a function with a bad
signature!"' failed.
0 opt 0x00000000017931a6 llvm::sys::PrintStackTrace(_IO_FILE*) + 38
1 opt 0x0000000001793423
2 opt 0x0000000001792e7b
3 libpthread.so.0 0x00007f0c0279fff0
4 libc.so.6 0x00007f0c018a91b5 gsignal + 53
5 libc.so.6 0x00007f0c018abfc0 abort + 384
6 libc.so.6 0x00007f0c018a2301 __assert_fail + 241
7 opt 0x00000000016e78c4 llvm::CallInst::init(llvm::Value*, llvm::ArrayRef<llvm::Value*>, llvm::Twine const&) + 402
8 LLFI.so 0x00007f0c0165adcb
9 LLFI.so 0x00007f0c0165aa83
10 LLFI.so 0x00007f0c016581c5
11 opt …Run Code Online (Sandbox Code Playgroud) 我在我的 beaglebone black 上下载并安装了适用于 ARM 的 JDK8u33,并且根据此文档(http://docs.oracle.com/javase/8/embedded/jdk-arm-8u6/index.html)包含并支持 javafx。
但是,我在 JRE 或 JDK 中找不到 jfxrt.jar,并且在简单的 javafx 程序上使用 javac 生成的“javafx.application”不是一个包。
是什么赋予了?