假设我想编写一个通用函数,它采用一些类型值K并将其与一个值相乘f64. 以下作品:
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}\nRun Code Online (Sandbox Code Playgroud)\n\n但是,我现在不再能够在同一函数中将两个浮点数相乘。实际上,看起来界限f64: Mul<K, Output = K>正在覆盖/隐藏(?) implimpl Mul<f64> for f64。这是一个例子:
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) 我正在使用 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 良好配合有什么想法吗?
说我有一些简化的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)
由此我想实现Foldable的Expr折叠超过这些缺点名单-但那是不可能的,因为Foldable需要一种类型的* -> *(即多态恰好与一个类型参数),我哪来Expr有样*。
这是为什么?在我看来,像这样折叠非多态类型是完全合理的,但是显然我缺少了一些东西。
css ×1
fold ×1
foldable ×1
functor ×1
generics ×1
haskell ×1
polymorphism ×1
rust ×1
tailwind-css ×1
traits ×1