我正在寻找优先级队列或堆数据结构的.NET实现
优先级队列是比简单排序提供更多灵活性的数据结构,因为它们允许新元素以任意间隔进入系统.将新作业插入优先级队列比在每次到达时重新排序所有内容更具成本效益.
基本优先级队列支持三种主要操作:
- 插入(Q,X).给定具有密钥k的项x,将其插入优先级队列Q.
- 查找-最小(Q).返回指向其键值小于优先级队列Q中任何其他键的项的指针.
- 删除 - 最小(Q).从密钥最小的优先级队列Q中删除该项
除非我在错误的地方寻找,否则框架中没有一个.有人知道一个好的,或者我应该自己动手?
我有以下标记作为Razor视图的一部分:
<table>
<caption>Presidents</caption>
<thead>
<tr>
<th scope="col">Name</th>
<th scope="col">Born</th>
<th scope="col">Died</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">Washington</th>
<td>1732</td>
<td>1799</td>
</tr>
<!-- etc -->
</tbody>
</table>
Run Code Online (Sandbox Code Playgroud)
将"验证的目标模式"设置为HTML5,Visual Studio就这样抱怨:
警告1验证(HTML5):元素'th'不得嵌套在元素'tbody tfoot'中.
这是真的吗?如果是这样,有人可以链接到规范吗?
我的理解是,使用<th>行标题不仅是合法的,而且是鼓励的.这当然看起来相当普遍,我可以链接几十个教程解释(看似合情合理)它有助于可访问性.
这是VS的错误吗?HTML5真正的变化(一个好的?一个坏的?)?发生了什么?
我正在为GHC制作一个插件,所以我正在阅读其中一些实现的文档.
动词"to zonk"到处都是,但是我无法找到一个解释,即什么是zonk某事或者(在广义上)当一个人想要的时候.我可以找到很多关于复杂情况的说明,在这种情况下,有必要对某些东西进行分类,但是如果不知道大局是什么,我会遇到很多麻烦.
根据Typeclassopedia(以及其他来源),Applicative逻辑上属于类型层次结构之间Monad和Pointed(因此Functor),所以如果今天编写Haskell前奏,我们理想情况下会有这样的东西:
class Functor f where
fmap :: (a -> b) -> f a -> f b
class Functor f => Pointed f where
pure :: a -> f a
class Pointed f => Applicative f where
(<*>) :: f (a -> b) -> f a -> f b
class Applicative m => Monad m where
-- either the traditional bind operation
(>>=) :: (m a) -> (a -> m b) …Run Code Online (Sandbox Code Playgroud) Haskell中的vanilla数据类型具有零个或多个构造函数,每个构造函数都扮演两个角色.
在表达式中,它支持引入,它是从零个或多个参数到数据类型的函数.
在模式中,它支持消除,它有点像从数据类型到Maybe(参数类型的元组)的函数.
模块签名是否有可能在暴露后者时隐藏前者?
用例是这样的:我有一个类型T,它的构造函数类型有时可以用来构造废话.我有构造函数,可用于构建保证不是废话的类型的实例.在这种情况下隐藏构造函数是有意义的,但是对于调用者来说,能够通过构造函数构建的保证非废话模式匹配仍然是有用的.
我怀疑这是不可能的,但万一有人有办法做到这一点,我会问.
接下来最好的事情是隐藏构造函数并从T - > Maybe(This,That),T - > Maybe(The,Other,Thing)等创建一堆函数.
有没有人有任何建议(或正则表达式)来解析HTTP Accept标头?
我试图在ASP.NET MVC中进行一些内容类型的协商.似乎没有内置方式(这很好,因为这里有很多思想流派),但解析并不是完全无关紧要的,如果有人已经完成,我宁愿不重新发明轮子它很好,愿意分享.
我有一个功能(*~).评估的大部分成本x *~ y来自检查第二个论点,大致如下:
(*~) :: a -> b d -> c d a
x *~ y = case y' of
Bar -> cheapFunction y' x
Baz -> cheapFunction2 y' x
Quux -> cheapFunction3 y' x
where
y' = expensive y
Run Code Online (Sandbox Code Playgroud)
有没有办法说服GHC部分评估运营商部分(*~ y)?
我尝试重写它像:
(*~) = flip go
where
go y = let y' = expensive y
in case y' of
Bar -> cheapFunction y'
Baz -> cheapFunction2 y'
Quux -> cheapFunction3 y'
Run Code Online (Sandbox Code Playgroud)
但它似乎没有帮助.我想这可能是因为flip …
许多常用的函数属性都有简洁的名称.例如,关联性,交换性,传递性等.
我正在创建一个与QuickCheck一起使用的库,它提供了这些属性和其他属性的简写定义.
我有一个问题的是一元函数的幂等性.函数f是幂等的iif∀x.fx == f(fx).
这个属性有一个有趣的概括,我正在努力寻找一个类似的简洁名称.为了避免通过建议选择偏向于人们的姓名选择,我将其命名为P并提供以下定义:
函数f具有关于giif∀x的P属性.fx == f(gx).我们可以通过用P来重新定义幂等性来看待这是幂等性的概括.函数f是幂等的,如果它具有关于它自身的P属性.
要看到这是一个有用的属性,请注意它可以证明可以用来实现许多常见优化的重写规则.当g是某种规范化函数时,这通常但不总是出现.一些例子:
length相对于P (对于f的所有选择)map fminimum是关于小块的 P.你会怎么称呼这家酒店?
任何人都可以解释或猜测GHC用户指南第7.9.2节中讨论的数据类型提升限制背后的动机吗?
以下限制适用于促销:
- 我们只提升其种类为表单的数据类型
* -> ... -> * -> *.特别是,我们不会推广更高级的数据类型,例如data Fix f = In (f (Fix f)),其类型涉及提升类型的数据类型,例如Vec :: * -> Nat -> *.
特别是,我对最后一点关于推广类型感兴趣,比如Vec :: * -> Nat -> *.推广这样的类似似乎很自然.我试图将我的一个库转换成各种幻像类型的特定提升类型,而不是使用kind *用于所有内容,以提供更好的文档等,我很快就遇到了它.
通常情况下编译器限制的原因会引起一些思考,但我没有看到这一点.所以我想知道它是否属于"不需要,所以我们没有建立它"或"那是不可能的/不可判断的/破坏推理".
我想为一个新闻列表制作MVC路线,可以以多种格式提供.
是否可以通过一条路线执行此操作(在我计划的设计中,在一些地方出现更为一般的"可选扩展"情况)?或者我需要制作两条这样的路线:
routes.MapRoute("News-ImplicitFormat",
"news",
new { controller = "News", action = "Browse", format = "" });
routes.MapRoute("News-ExplicitFormat",
"news.{format}"
new { controller = "News", action = "Browse" });
Run Code Online (Sandbox Code Playgroud)
似乎路由系统支持以下内容是有用的:
routes.MapRoute("News",
"news(.{format})?",
new { controller = "News", action = "Browse" });
Run Code Online (Sandbox Code Playgroud) haskell ×6
ghc ×3
asp.net-mvc ×2
.net ×1
asp.net ×1
c# ×1
data-kinds ×1
heap ×1
html ×1
html5 ×1
http ×1
http-headers ×1
naming ×1
optimization ×1
performance ×1
quickcheck ×1
regex ×1
theory ×1
typeclass ×1