小编Lon*_*ong的帖子

INLINE Pragma与类型组合

鉴于以下代码(从attoparsec库复制),内联编译指示有什么作用?我认为只有fmapR内联才有意义,而不是fmap其他Functor实例中定义的其他内容.

instance Functor (IResult t) where
    fmap = fmapR
    {-# INLINE fmap #-}
Run Code Online (Sandbox Code Playgroud)

haskell ghc

7
推荐指数
1
解决办法
825
查看次数

为什么由于"添加drop-check规则时溢出"而无法实例化数据结构?

这是一个我可以写下来的数据结构,它被Rust编译器接受:

pub struct Pair<S, T>(S, T);

pub enum List<T> {
    Nil,
    Cons(T, Box<List<Pair<i32, T>>>),
}
Run Code Online (Sandbox Code Playgroud)

但是,我不能写

let x: List<i32> = List::Nil;
Run Code Online (Sandbox Code Playgroud)

操场

因为Rust会抱怨"添加drop-check规则时出现溢出".为什么不可能实例化List::Nil

应该注意以下工作:

pub struct Pair<S, T>(S, T);

pub enum List<T> {
    Nil,
    Cons(T, Box<List<T>>),
}

fn main() {
    let x: List<i32> = List::Nil;
}
Run Code Online (Sandbox Code Playgroud)

操场

rust data-structures recursive-type

7
推荐指数
1
解决办法
132
查看次数

Haskell的类型系统将数值视为函数?

在玩了一下haskell之后我偶然发现了这个功能:

Prelude Data.Maclaurin> :t ((+) . ($) . (+))
((+) . ($) . (+)) :: (Num a) => a -> (a -> a) -> a -> a
Run Code Online (Sandbox Code Playgroud)

(Data.Maclaurin由包向量空间导出.)因此它需要一个Num,一个函数,另一个Num并最终返回一个Num.以下工作有什么神奇之处?

Prelude Data.Maclaurin> ((+) . ($) . (+)) 1 2 3
6
Run Code Online (Sandbox Code Playgroud)

2显然不是一个函数(a-> a)或者我错过了什么?

haskell types numeric typeclass

6
推荐指数
1
解决办法
325
查看次数

为什么Serde无法为仅包含&Path的结构派生反序列化?

我试图派生serde::Deserialize一个包含对的引用的结构Path。这产生了一条错误消息,如果您将其替换&'a Path为,则不会发生&'a str。是什么引起了不同的行为#[derive(Deserialize)]

操场

#!/bin/cargo script
//! ```cargo
//! [dependencies]
//! serde_derive="1.0"
//! serde="1.0"
//! ```

extern crate serde_derive;

use serde_derive::*;

#[derive(Deserialize)]
struct A<'a> {
    a: &'a std::path::Path,
    //a: &'a str,
}

fn main() {}
Run Code Online (Sandbox Code Playgroud)
error[E0495]: cannot infer an appropriate lifetime for lifetime parameter `'de` due to conflicting requirements
 --> src/main.rs:7:5
  |
7 |     a: &'a std::path::Path,
  |     ^
  |
note: first, the lifetime cannot outlive the lifetime 'de as …
Run Code Online (Sandbox Code Playgroud)

rust serde

2
推荐指数
1
解决办法
148
查看次数