- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 vinyl图书馆,有一个RecAll
类型族,让我们要求部分应用的约束对于类型级别列表中的每个类型都是正确的。例如,我们可以这样写:
myShowFunc :: RecAll f rs Show => Rec f rs -> String
RecAll f rs c
在哪里
c
是未知的,我们知道
c x
包含
d x
(借用ekmett的
contstraints包的语言),我们怎样才能得到
RecAll f rs d
?
:&:
来自
Control.Constraints.Combine 的组合器
exists 中的模块包裹。 (注意:如果您安装了其他东西,该软件包将无法构建,因为它依赖于
contravariant
的 super 旧版本。不过,您可以复制我提到的一个模块。)有了这个,我可以得到一些非常漂亮的东西约束,同时最小化 typeclass broilerplate。例如:
RecAll f rs (TypeableKey :&: FromJSON :&: TypeableVal) => Rec f rs -> Value
RecAll f rs (TypeableKey :&: TypeableVal) => Rec f rs -> Value
import Data.Constraint
weakenAnd1 :: ((a :&: b) c) :- a c
weakenAnd1 = Sub Dict -- not the Dict from vinyl. ekmett's Dict.
weakenAnd2 :: ((a :&: b) c) :- b c
weakenAnd2 = Sub Dict
-- The two Proxy args are to stop GHC from complaining about AmbiguousTypes
weakenRecAll :: Proxy f -> Proxy rs -> (a c :- b c) -> (RecAll f rs a :- RecAll f rs b)
weakenRecAll _ _ (Sub Dict) = Sub Dict
Dict
作为我实际代码中的合格导入,这就是它提到
Constraint.Dict
的原因:
Table.hs:76:23:
Could not deduce (a c) arising from a pattern
Relevant bindings include
weakenRecAll :: Proxy f
-> Proxy rs -> (a c :- b c) -> RecAll f rs a :- RecAll f rs b
(bound at Table.hs:76:1)
In the pattern: Constraint.Dict
In the pattern: Sub Constraint.Dict
In an equation for ‘weakenRecAll’:
weakenRecAll _ _ (Sub Constraint.Dict) = Sub Constraint.Dict
Table.hs:76:46:
Could not deduce (RecAll f rs b)
arising from a use of ‘Constraint.Dict’
from the context (b c)
bound by a pattern with constructor
Constraint.Dict :: forall (a :: Constraint).
(a) =>
Constraint.Dict a,
in an equation for ‘weakenRecAll’
at Table.hs:76:23-37
or from (RecAll f rs a)
bound by a type expected by the context:
(RecAll f rs a) => Constraint.Dict (RecAll f rs b)
at Table.hs:76:42-60
Relevant bindings include
weakenRecAll :: Proxy f
-> Proxy rs -> (a c :- b c) -> RecAll f rs a :- RecAll f rs b
(bound at Table.hs:76:1)
In the first argument of ‘Sub’, namely ‘Constraint.Dict’
In the expression: Sub Constraint.Dict
In an equation for ‘weakenRecAll’:
weakenRecAll _ _ (Sub Constraint.Dict) = Sub Constraint.Dict
最佳答案
让我们首先回顾一下 Dict
和 (:-)
旨在使用。
ordToEq :: Dict (Ord a) -> Dict (Eq a)
ordToEq Dict = Dict
Dict
类型
Dict (Ord a)
带来约束
Ord a
进入范围,从中
Eq a
可以推导出(因为
Eq
是
Ord
的父类(super class)),所以
Dict :: Dict (Eq a)
是很好的类型。
ordEntailsEq :: Ord a :- Eq a
ordEntailsEq = Sub Dict
Sub
在参数的持续时间内将其输入约束带入范围,允许
Dict :: Dict (Eq a)
也可以很好地打字。
Dict
上的模式匹配将约束带入范围,
Sub Dict
上的模式匹配没有将一些新的约束转换规则纳入范围。事实上,除非输入约束已经在范围内,否则无法在
Sub Dict
上进行模式匹配。一点也不。
-- Could not deduce (Ord a) arising from a pattern
constZero :: Ord a :- Eq a -> Int
constZero (Sub Dict) = 0
-- okay
constZero' :: Ord a => Ord a :- Eq a -> Int
constZero' (Sub Dict) = 0
"Could not deduce (a c) arising from a pattern"
: 您尝试在
Sub Dict
上进行模式匹配, 但输入约束
a c
尚未在范围内。
RecAll f rs b
约束。那么,需要哪些部分,哪些部分缺失?我们来看看
RecAll
的定义.
type family RecAll f rs c :: Constraint where
RecAll f [] c = ()
RecAll f (r : rs) c = (c (f r), RecAll f rs c)
RecAll
是一个类型族,因此未经评估,具有完全抽象的
rs
, 约束
RecAll f rs c
是一个黑盒子,不能从任何较小的部分中得到满足。一旦我们专业
rs
至
[]
或
(r : rs)
,很明显我们需要哪些部分:
recAllNil :: Dict (RecAll f '[] c)
recAllNil = Dict
recAllCons :: p rs
-> Dict (c (f r))
-> Dict (RecAll f rs c)
-> Dict (RecAll f (r ': rs) c)
recAllCons _ Dict Dict = Dict
p rs
而不是
Proxy rs
因为它更灵活:如果我有一个
Rec f rs
,例如我可以用它作为我的代理
p ~ Rec f
.
(:-)
实现上面的一个版本。而不是
Dict
:
weakenNil :: RecAll f '[] c1 :- RecAll f '[] c2
weakenNil = Sub Dict
weakenCons :: p rs
-> c1 (f r) :- c2 (f r)
-> RecAll f rs c1 :- RecAll f rs c2
-> RecAll f (r ': rs) c1 :- RecAll f (r ': rs) c2
weakenCons _ entailsF entailsR = Sub $ case (entailsF, entailsR) of
(Sub Dict, Sub Dict) -> Dict
Sub
带来其输入约束
RecAll f (r ': rs) c1
在它的参数持续时间内进入范围,我们已经安排它包括函数体的其余部分。类型族的方程
RecAll f (r ': rs) c1
扩展到
(c1 (f r), RecAll f rs c1)
,因此它们也都被纳入范围。它们在范围内的事实允许我们在两个
Sub Dict
上进行模式匹配。 ,还有那两个
Dict
将它们各自的约束纳入范围:
c2 (f r)
, 和
RecAll f rs c2
.这两个正是目标约束
RecAll f (r ': rs) c2
扩展到,所以我们的
Dict
右边是很好的类型。
weakenAllRec
的实现,我们需要在
rs
上进行模式匹配以确定是否将工作委托(delegate)给
weakenNil
或
weakenCons
.但是自从
rs
在类型级别,我们不能直接对其进行模式匹配。
Hasochism论文解释了如何在类型级别上进行模式匹配
Nat
,我们需要创建一个包装器数据类型
Natty
.方式
Natty
有效的是,它的每个构造函数都由相应的
Nat
索引。构造函数,所以当我们对
Natty
进行模式匹配时值级别的构造函数,相应的构造函数也隐含在类型级别。我们可以为类型级列表定义这样的包装器,例如
rs
, 但恰好
Rec f rs
已经有与
[]
对应的构造函数和
(:)
,以及
weakenAllRec
的调用者无论如何,很可能会有一个躺在那里。
weakenRecAll :: Rec f rs
-> (forall a. c1 a :- c2 a)
-> RecAll f rs c1 :- RecAll f rs c2
weakenRecAll RNil entails = weakenNil
weakenRecAll (fx :& rs) entails = weakenCons rs entails
$ weakenRecAll rs entails
entails
的类型必须是
forall a. c1 a :- c2 a
,而不仅仅是
c1 a :- c2 a
,因为我们不想声称
weakenRecAll
适用于任何
a
调用者的选择,而是我们希望要求调用者证明
c1 a
包含
c2 a
对于每个
a
.
关于haskell - 通过蕴涵削弱黑胶唱片的 RecAll 约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29905159/
当我使用以下代码计算单类的 precision_recall_fscore_support 时(仅 1 ) import numpy as np from sklearn.metrics import
在 vinyl图书馆,有一个RecAll类型族,让我们要求部分应用的约束对于类型级别列表中的每个类型都是正确的。例如,我们可以这样写: myShowFunc :: RecAll f rs Show =
此 Question询问有关在当前目录中列出目录(不是文件)的问题。我在对其中一个答案的评论中指出,我们不能使用 recursive函数的参数,如 dir和 list.files递归列出当前目录中的目
实现过程 ? 1
让我们谈谈标签 A、B 和 C 的多标签分类问题。我可以计算每个标签的准确率/召回率,如下所示: 精度:正确的 NodeX 分配/总 NodeX 分配 记忆:正确的 NodeX 分配/NodeX 真实
您好,我正在尝试使用以下数据绘制召回精度曲线: Recall Precision 0.88196 0.467257 0.898501 0.468447 0.89899 0.47
我正在尝试使用 tensorflow 实现多标签句子分类模型。大约有 1500 个标签。该模型运行得很好,但我不确定它生成的指标。 这是生成指标的代码段: with tf.name_scope
我正在处理不平衡数据的二元分类任务。 因为在这种情况下准确度没有太大意义。我使用 Scikit-Learn 计算 Precision-Recall 曲线和 ROC 曲线以评估模型性能。 但我发现当我使
我想知道是否有一种方法可以像这样从 scikit learn 包中实现不同的分数功能: from sklearn.metrics import confusion_matrix confusion_m
我正在训练一个检测模型,其中训练和测试数据是 3D NumPy 数组。当开始训练这个模型时发现了这种类型的错误。代码链接如下 Training_model.py detection.py perfor
这个问题在这里已经有了答案: Is there a keyboard shortkey to browse the history in a Jupyter notebook (1 个回答) 关闭
在命令行 Python session 中,我可以按 Control-P 来检索之前输入的行编辑它。 如何在 Jupyter 中执行类似的操作,即继承前一个“In:”块的内容? 最佳答案 看起来 Ju
我正在为我的公司构建一个推荐系统,并对计算 precision@K 和 recall@K 的公式有疑问,我在 Google 上找不到该公式。 使用 precision@K,一般公式将是 top-k 集
我目前正在研究 ML 分类问题,并使用 sklearn 库的以下导入和相应代码来计算精度、召回率和 F1,如下所示。 from sklearn.metrics import precision_rec
我在 C++ 上使用 Openframeworks。我试图使用 openweathermap.org 的 api 在图形上绘制一些点。函数 plotAxes() 和 plotGraph() 被多次调用
我写了一个程序来执行信息检索。 用户在搜索栏中输入查询,程序可以显示相关的文本结果,例如相关的句子和由该句子组成的文章。 我对如何评估结果做了一些研究。我可能需要计算 precision, recal
在测试和评分小部件中,我们可以更改目标类(如果我们进行分类)。 Image 但我想使用 Python 脚本小部件进行测试和评分。 Orange.evaluation.Precision(results
我覆盖 设备 session Controller ...它有效(我可以使用 json 登录),但我无法让它重定向到另一个错误操作: class Users::SessionsController
我正在尝试使用 dlib 的 pig 金字塔检测器来训练狗脸检测器。我使用哥伦比亚狗数据集:ftp://ftp.umiacs.umd.edu/pub/kanazawa/CU_Dogs.zip 一开始我
我正在尝试使用 pyspark.ml 计算分类器的精度、召回率和 F1: model = completePipeline.fit(training) predictions = model.tran
我是一名优秀的程序员,十分优秀!