小编aya*_*dov的帖子

检查haskell中函数参数的最佳方法

我有一个函数说foo :: [Integer] - > Bool,但只有当传入的参数对某些条件有效时它才有效,否则它应该立即终止.

 foo x | not $ isSorted x = False
       | otherwise = some_recursive_stuff_here
       where
            isSorted ax = ax == sort ax
Run Code Online (Sandbox Code Playgroud)

等等

但是我不希望每次都检查它是否已经排序.有没有一种好方法可以处理其他内容然后引入另一个内部函数?

haskell arguments function

14
推荐指数
1
解决办法
1051
查看次数

阻塞 http 调用期间的反应式编程基础知识

作为一个新近研究反应式编程的人,我有一个问题似乎在其他地方没有得到解答:

阻塞调用(即来自前端的http请求)如何真正利用这个概念?

我的理解是这样的,问题是如果有误请纠正:

  1. 前端用户单击按钮并进行 ajax 调用。
  2. 然后浏览器发出常规的http请求
  3. 那么反应式后端本质上仍然是一个阻塞服务器。这样,在整个事情完成之前不会提供 http 响应
  4. 响应式本质就在这里,它不是在 1 个线程中处理来自前端的 1 个请求,而是使用更少的线程,通过保存何时执行什么的回调。利用库 API 以某种方式管理这种复杂性。
  5. 归根结底,我们从前端进行的 http 调用仍然是一个阻塞调用。与基于线程的并发不同的是,我们将阻塞调用委托给其他线程(实际上,为什么使用的线程更少?),例如数据库调用、外部 Rest 调用等。最后,我们阻塞等待直到全部完成。

这些假设正确吗?

进一步来说,是的,基本理解是正确的,是什么使得这种方法更适合基于线程的方法?

假设在我的例子中,预期的并发用户并不是那么大,同时达到前 500 人。

vert.x reactivex spring-webflux

5
推荐指数
1
解决办法
449
查看次数

CPU缓存性能。存储未命中与加载未命中

我使用 perf 作为基本事件计数器。我正在开发一个遭受数据缓存存储未命中的程序。其中比例高达80%。

我知道缓存原则上是如何工作的。它会在各种未命中情况下从内存加载,并在需要时从缓存中删除数据。我不明白的是:存储未命中和加载未命中之间有什么区别。它与加载和存储有何不同。你怎么能储存错过呢?

performance caching cpu-cache perf

3
推荐指数
1
解决办法
1万
查看次数

clojure destructuring vs haskell-like argument pattern matching

来自Haskell我发现在Clojure中很难遍历某些数据类型.在Haskell中,如果我喜欢在类型上做一些递归,在大多数基本情况下就像

foo (x : [])     = Just value
foo (x : y : xs) = bar y (foo xs)
foo _            = Nothing
Run Code Online (Sandbox Code Playgroud)

很好.

但我认为Clojure的解构并不像Haskell的模式匹配那么强大.是否有一个很好的惯用方法来完成我想要做的事情?举个例子,如果我有一个列表/向量,当没有更多元素时,如何匹配一个案例?

haskell functional-programming clojure

3
推荐指数
1
解决办法
1284
查看次数

如何从元组中将元素定义为haskell中的类型同义词

我在使用定义为类型同义词的元组的情况下,所以我不能真正使用记录结构.有没有办法获得这些元素?

这里更具体的是我的意思:

 type Movie  = (Title, Regisseur, MainActors, ReleaseDate, Genre, SalesPrice)  

 type Title = String

 type SalesPrice = Int   

 etc
Run Code Online (Sandbox Code Playgroud)

我怎样才能只TitleReleaseDate一个例子.除了为元组中的每个位置定义一个getter函数.

getter haskell tuples

0
推荐指数
1
解决办法
536
查看次数

虚拟占位符

如何创建一个返回类型,它是所有其他类型的子类型.我想要以下内容

def foo(): (String => String) = TODO
def bar(): String = TODO
def baz(): Int = TODO
Run Code Online (Sandbox Code Playgroud)

应该TODO是什么类型的?

syntax scala

0
推荐指数
1
解决办法
101
查看次数