我想cfg用Cargo 有条件地编译我的源代码,在谷歌搜索一段时间后,似乎解决方案是使用cargo --features.
http://doc.crates.io/manifest.html
我尝试添加一些
#[cfg(feature = "foo")]
Run Code Online (Sandbox Code Playgroud)
在源代码和
cargo build --features foo
Run Code Online (Sandbox Code Playgroud)
,但它说
Package `xxx v0.0.1 (file:///C:/yyy/xxx)` does not have these features: `foo`
Run Code Online (Sandbox Code Playgroud)
我怎样才能让货物识别出这些特征?我必须添加一些东西Cargo.toml吗?
这里的版本rustc和cargo我使用:
C:\>rustc --version
rustc 0.13.0-nightly (42deaa5e4 2014-12-16 17:51:23 +0000)
C:\>cargo --version
cargo 0.0.1-pre-nightly (5af754d 2014-12-18 01:50:48 +0000)
Run Code Online (Sandbox Code Playgroud) Agda中有哪些大小的类型?我试图阅读有关MiniAgda的文章,但由于以下几点未能继续:
>和#模式意味着什么?码:
trait Trait<T> {}
struct Struct<U>;
impl<T, U: Trait<T>> Struct<U> {}
Run Code Online (Sandbox Code Playgroud)
错误:
error[E0207]: the type parameter `T` is not constrained by the impl trait, self type, or predicates
--> src/main.rs:5:6
|
5 | impl<T, U: Trait<T>> Struct<U> {}
| ^ unconstrained type parameter
Run Code Online (Sandbox Code Playgroud)
似乎RFC 447禁止这种模式; 有没有办法解决这个问题?我认为可以通过更改T为关联类型来解决,但这会阻止我执行multidispatch.
在阿格达,有Set n.据我所知,Set n将Haskell风格的值类型类层次结构扩展到无限级别.也就是说,Set 0是正常类型Set 1的宇宙,是正常类型的宇宙,是正常类型的宇宙Set 2,等等.
相比之下,伊德里斯拥有所谓的"累积的宇宙层次".似乎for a < b,Type a: Type b和Universe级别是推断的.但它在现实世界的节目中意味着什么?我们不能定义只能在更高但不是更低的宇宙上运行的东西吗?
顺便说一句,我知道它在逻辑上是不一致的,但是* : *与上述一致的解决方案相比有什么?
type-systems functional-programming agda dependent-type idris
在仿射类型系统中,资源最多可以使用一次。
从 Hindley-Milner 类型系统开始,似乎强制关联的一种简单方法是在使用变量的类型规则时简单地从当前类型上下文中删除变量(如LinearML 上的这些幻灯片建议,第 15 页)。
这就是加强亲和力的全部内容吗?或者还有什么更复杂的事情要做?
#[macro_use]
extern crate log;
fn whatever() {
info!("whatever")
}
#[test]
fn test() {
whatever();
}
Run Code Online (Sandbox Code Playgroud)
我想在运行单元测试()后查看日志,现在cargo test怎么可能?
在 idris 中,有一个称为UniqueType类型值的宇宙,其中只能使用一次。据我所知,它可以用来编写高性能代码。但是一个值只能使用一次的事实通常太有限了,所以有一种方法可以借用一个值而不是消费它:
data Borrowed : UniqueType -> BorrowedType where ...
Run Code Online (Sandbox Code Playgroud)
该Borrowed数据类型被定义为在以上伊德里斯。为什么它不简单地返回Type而是引入另一个类型的宇宙 ( BorrowedType)?
以下函数编译:
onlyModByFive : (n : Nat) -> (k : Nat ** 5 * k = n) -> Nat
onlyModByFive n k = 100
Run Code Online (Sandbox Code Playgroud)
但k它的Nat ** 5 * k = n语法代表什么呢?
另外,我怎么称呼它?这是我尝试过的,但我不理解输出.
*Test> onlyModByFive 5 5
When checking an application of function Main.onlyModByFive:
(k : Nat ** plus k (plus k (plus k (plus k (plus k 0)))) = 5) is not a
numeric type
Run Code Online (Sandbox Code Playgroud)
答案来源 - https://groups.google.com/d/msg/idris-lang/ZPi9wCd95FY/eo3tRijGAAAJ
是不是已经Send/ Sync?官方文件只提到它与数据竞赛有关.
rust ×4
type-systems ×4
idris ×3
agda ×2
linear-types ×2
rust-cargo ×2
types ×2
induction ×1
logging ×1
pointers ×1
testing ×1
totality ×1
traits ×1
unit-testing ×1