小编ion*_*ree的帖子

在 Rust 中一般将不同类型的值相乘

假设我想编写一个通用函数,它采用一些类型值K并将其与一个值相乘f64. 以下作品:

\n\n
fn generic1<K>(a: K, b: f64) -> K\nwhere\n    K: Mul<f64, Output = K> + Add<K, Output = K> + Copy,\n    f64: Mul<K, Output = K>,\n{\n     a * b + b * a\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

但是,我现在不再能够在同一函数中将两个浮点数相乘。实际上,看起来界限f64: Mul<K, Output = K>正在覆盖/隐藏(?) implimpl Mul<f64> for f64。这是一个例子:

\n\n
fn generic2<K>(a: K, b: f64) -> K\nwhere\n    K: Mul<f64, Output = K> + Add<K, Output = K> + Add<f64, Output = K> + Copy,\n    f64: Mul<K, Output …
Run Code Online (Sandbox Code Playgroud)

generics traits rust

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

tailwindcss:强制 tailwind 使用兼容的 RGB 语法?

我正在使用 tailwindcss 移植一个应用程序以与 IE11 一起使用。不幸的是,tailwindcss 坚持使用现代W3C CSS Color Module Level 4 rgb()语法生成颜色,这似乎在 IE 中不起作用,例如它生成如下类:

.bg-blue-500 {
  --tw-text-opacity: 1;
  color: rgb(59 130 246 / var(--tw-bg-opacity));
}
Run Code Online (Sandbox Code Playgroud)

我尝试在 postcss 管道中使用postcss-color-rgb将其转换回常用语法,但无济于事:

postcss([
    require('tailwindcss')(twConfig),
    require('postcss-color-rgb'),
    require('autoprefixer'),
]).process(cssContent, {
    from: css,
    to: `build/${name}.css.tmp`
})

Run Code Online (Sandbox Code Playgroud)

Tailwind 声称与任何现代浏览器兼容,有些人可能敢将 IE11 归为此类。对于让顺风与 IE11 良好配合有什么想法吗?

css internet-explorer internet-explorer-11 tailwind-css

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

为什么非多态类型不能在Haskell中实现Foldable?

说我有一些简化的Lisp样式Expr类型,如下所示

data Expr = String String | Cons Expr Expr
  deriving (Show)
Run Code Online (Sandbox Code Playgroud)

我可以将列表创建为Cons-cell的Cons-cell:

Cons (String "hello") (Cons (String "World") (String "!"))
Run Code Online (Sandbox Code Playgroud)

由此我想实现FoldableExpr折叠超过这些缺点名单-但那是不可能的,因为Foldable需要一种类型的* -> *(即多态恰好与一个类型参数),我哪来Expr有样*

这是为什么?在我看来,像这样折叠非多态类型是完全合理的,但是显然我缺少了一些东西。

polymorphism haskell functor fold foldable

4
推荐指数
1
解决办法
110
查看次数