我想为一个新闻列表制作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) 我正在寻找一个图书馆或一篇论文来描述如何确定一个三角形网格是否与另一个三角形网格相交.
有趣的是,我很空虚.如果有一些方法可以在CGAL中做到这一点,它就是在逃避我.
看起来它应该是可能的,因为三角形交叉是可能的,因为每个网格包含有限数量的三角形.但我认为必须有一种比明显的O(n*m)方法更好的方法,其中一个网格有n个三角形而另一个网格有m个三角形.
我正在研究一种用于数据库操作的Haskell-meets-SQL语言,以及一个常见的类型类库,只要有意义,就可以使用Hackage.
因为数据库查询优化器的一个重要目标是消除不必要的排序,所以保留实际上需要排序的静态表示非常重要.这让我们为折叠定义了一个类型类.
Haskell Data.Foldable有:(忽略与我正在制定的点无关的默认定义)
class Foldable t where
-- | Combine the elements of a structure using a monoid.
fold :: Monoid m => t m -> m
-- | Map each element of the structure to a monoid,
-- and combine the results.
foldMap :: Monoid m => (a -> m) -> t a -> m
-- | Right-associative fold of a structure.
foldr :: (a -> b -> b) -> b -> t a -> b
-- …Run Code Online (Sandbox Code Playgroud) 我有一个优化问题,我想知道是否有一个聪明的方法来解决它.(这可能已经被广泛研究过,我只是不知道要查找它的名称.)
我有一个(编辑:免费)有限生成的阿贝尔群G,在n发电机上.我还有一组P元素G,每个元素都标有严格正数的成本.所有的生成器都G出现在P,因此总是可以表达G作为元素P或其反转的产物的任何元素.任何此类产品的成本是P其中出现的元素的成本之和,并考虑它们出现的频率.表示身份元素的nullary产品的成本G为零.
考虑到该组的一个元素,我想找到一种方法来找到一个最低成本的产品,用它的元素来表达它P.
将其转换为最短路径问题是没有负面的自行车(在无限图上,但对于任何给定的元素,您只需要在标识元素附近的有限部分).将它转换为整数线性编程问题也很简单.
可能是其中一种翻译是要走的路?或者此问题的其他结构是否导致更容易的方法呢?在我的实际问题5 <= n <= 10和我感兴趣的元素中,从来没有大于+/- 20的任何发生器的多重性.
我在Haskell工作,因此功能方法优先于有状态方法,但有状态方法也可以.
algorithm optimization haskell combinatorics finite-group-theory
我知道平面度测试可以在O(v)中进行(等效O(e),因为平面图具有O(v)边)时间.
我想知道它是否可以在O(1)摊销时间在线完成,因为每个边缘被添加(仍然是整个O(e)时间).
换句话说,在表示图形边缘的数据库表中,并且受约束表示所表示的图形是平面的,负责管理约束的DBMS需要多长时间才能验证每个建议的插入?(为简化起见,假设没有删除.)必须重新运行其中一个O(v)平面度测试算法来测试每个建议的插入或插入组吗?
.Net FileStream是否可以接受以下多线程调用模式?
几个线程调用这样的方法:
ulong offset = whatever; // different for each thread
byte[] buffer = new byte[8192];
object state = someState; // unique for each call, hence also for each thread
lock(theFile)
{
theFile.Seek(whatever, SeekOrigin.Begin);
IAsyncResult result = theFile.BeginRead(buffer, 0, 8192, AcceptResults, state);
}
if(result.CompletedSynchronously)
{
// is it required for us to call AcceptResults ourselves in this case?
// or did BeginRead already call it for us, on this thread or another?
}
Run Code Online (Sandbox Code Playgroud)
在哪里AcceptResults:
void AcceptResults(IAsyncResult …Run Code Online (Sandbox Code Playgroud) 我有一个像这样的记录类型:
data VehicleState f = VehicleState
{
orientation :: f (Quaternion Double),
orientationRate :: f (Quaternion Double),
acceleration :: f (V3 (Acceleration Double)),
velocity :: f (V3 (Velocity Double)),
location :: f (Coordinate),
elapsedTime :: f (Time Double)
}
deriving (Show)
Run Code Online (Sandbox Code Playgroud)
这很酷,因为我可以拥有VehicleState Signal各种各样的元数据,我可以拥有每个信号VehicleState (Wire s e m ())的netwire语义,或者我可以VehicleState Identity在某个时间观察实际值.
有没有一种很好的方法来在每个字段之间来回映射VehicleState Identity和VehicleState'定义runIdentity?
data VehicleState' = VehicleState'
{
orientation :: Quaternion Double,
orientationRate :: Quaternion Double,
acceleration :: …Run Code Online (Sandbox Code Playgroud) 如果我有一个带有幻像参数的类型,我有时只会关心它,如下所示:
data Foo p a b = Bar a b
Run Code Online (Sandbox Code Playgroud)
是否有任何黑客方式来编写一个类型的同义词Baz,这Baz a b是Foo p a b为了一些p我忘记的?
你做不到:
type Baz a b = Foo p a b
Run Code Online (Sandbox Code Playgroud)
虽然你可以做(有适当的扩展):
type Baz a b = forall p.Foo p a b
Run Code Online (Sandbox Code Playgroud)
它看起来不像我想要的那样,因为我无法将类型的值转换Foo P1 a b为类型Baz a b,并带有关于"刚性类型变量"的消息.
您是否需要另一层构造器来实现此效果,如下所示?你能简单解释一下原因吗?
data Baz' a b = forall p.Baz' (Foo p a b)
Run Code Online (Sandbox Code Playgroud) 我需要广泛使用:
slice :: Int -> Int -> ByteString -> ByteString
slice start len = take len . drop start
Run Code Online (Sandbox Code Playgroud)
两部分问题:
(Int, Int) -> ByteString -> ByteString和flip版本相同的版本.我也试过寻找[a]版本,看看是否有一个常用名称.我怀疑我做错了什么,因为我强烈期望找到很多人走上同一条路,但我的谷歌没有找到任何东西.
我理解为什么新的角色系统和注释要求类型(和数据)系列参数起作用nominal.
所以当我宣布时,我期待
data family CoordinateRepresentation ty a :: *
Run Code Online (Sandbox Code Playgroud)
这ty和a将得到nominal的角色.(我的实际例子是一个相关的数据系列,但由于我认为它没有改变任何东西,我省略了随之而来的额外噪音.)
我没想到的是,当我改变它时
data family CoordinateRepresentation ty :: * -> *
Run Code Online (Sandbox Code Playgroud)
是未命名的第二类型参数仍然是一个nominal角色.
为什么是这样?它不能安全地获得一个representational角色,因为没有data instance CoordinateRepresentation ... = ...必要创建一个新的构造函数?该构造函数如何能够nominal以编译器无法看到的方式在角色中使用其参数?即使它是一个开放的系统,并且有单独的编译,我仍然没有得到它.
haskell ×6
algorithm ×2
ghc ×2
.net ×1
asp.net-mvc ×1
bytestring ×1
c# ×1
file-io ×1
filestream ×1
functor ×1
graph-theory ×1
mesh ×1
optimization ×1
surface ×1
typeclass ×1