是否有一种简单的方法来使用Sitelets和Application.MultiPage生成一种"默认"路线(例如,捕获"未找到"路线)?
type EndPoint =
| [<EndPoint "/">] Home
| [<EndPoint "/about">] About
[<Website>]
let Main =
Application.MultiPage (fun ctx endpoint ->
match endpoint with
| EndPoint.Home -> HomePage ctx
| EndPoint.About -> AboutPage ctx
Run Code Online (Sandbox Code Playgroud)
我想定义一个EndPoint可以处理除了"/home"和之外的任何请求"/about".
我正在尝试使用Clojure处理图像,我想使用Clojure数据结构来表示图像.基本上,我的第一种方法是使用向量矢量并对mapv每个像素值进行操作并返回具有相同数据结构的新图像表示.但是,一些基本操作需要花费太多时间.
使用Jvisual profiler,我得到的结果如下所示.有人可以给我一个改善表现的小费吗?我可以提供更多的细节,如果有必要,但也许只是在寻找的成本seq,并next有人能有一个很好的猜测.

F#中的类型声明示例:
type ActiveCartData = { UnpaidItems: string list }
type PaidCartData = { PaidItems: string list; Payment: float }
type ShoppingCart =
| EmptyCart // no data
| ActiveCart of ActiveCartData
| PaidCart of PaidCartData
Run Code Online (Sandbox Code Playgroud)
我们如何能做到在Scala中类似的东西使用trait和case class和/或case object?
一个开始:
trait ShoppingCart
case object EmptyCart extends ShoppingCart
case object ActiveCart extends ShoppingCart
case object PaidCart extends ShoppingCart
Run Code Online (Sandbox Code Playgroud)
但是如何与数据持有者类型建立关系呢?
我正在寻找如下的内置函数pfilter-by-keys:
(pfilter-by-keys '(:a :b) '(:c 10 :b 20 :a 4))
;; => (:B 20 :A 4)
Run Code Online (Sandbox Code Playgroud)
它的代码非常简单:
(defun pfilter-by-keys (keys plist)
"List -> PList -> PList
Returns a new plist with only the keys/values correspondent to the given
keys."
(loop for (k v) on plist by #'cddr
when (member k keys :test #'equal)
append (list k v)))
Run Code Online (Sandbox Code Playgroud)
CL有一些像上面那样的内置函数吗?
PS.:亚历山大有一个非常接近的功能:remove-from-plist.