小编Jus*_* L.的帖子

算法/启发式用于通过"会话"/来自时间戳的隐式会话对聊天消息历史进行分组?

问题:我有一系列聊天消息 - 两个用户之间 - 带有时间戳.比如说,我可以同时呈现一整天的聊天消息.然而,在一整天中,存在多个离散的对话/会话......并且对于用户而言,将这些分开而不是作为一个连续流的所有日子将更有用.

是否存在可以"推断"隐式会话/会话从时间戳开始/中断的算法或启发式算法?除了任意'如果差距大于x分钟,它是一个单独的会话'.如果这是唯一的情况,这个间隔是如何确定的?无论如何,我想避免这种情况.

例如,有50条消息在2:00到3:00之间发送,然后休息,然后在4:00到5:00之间发送20条消息.在那之间插入一个休息......但是如何确定休息?

我确信已有关于这个主题的文献,但我不知道该搜索什么.

我有一段时间玩边缘检测算法和基于梯度的方法.

(有关更多说明,请参阅评论)

algorithm heuristics

6
推荐指数
1
解决办法
651
查看次数

为STT定义PrimMonad实例?(ST变压器)

Data.Vector.Mutable似乎需要PrimMonadin ST sIOmonads 的实例.

类型类定义为 -

-- | Class of primitive state-transformer monads
class Monad m => PrimMonad m where
  -- | State token type
  type PrimState m

  -- | Execute a primitive operation
  primitive :: (State# (PrimState m) -> (# State# (PrimState m), a #)) -> m a

  -- | Expose the internal structure of the monad
  internal :: m a -> State# (PrimState m) -> (# State# (PrimState m), a #)
Run Code Online (Sandbox Code Playgroud)

它们是这样实现的 …

haskell typeclass

6
推荐指数
1
解决办法
568
查看次数

在Haskell中实现"findM"?

我正在寻找一个基本上就像mapM在列表上的函数- 它执行一系列monadic动作,将列表中的每个值作为参数 - 并且每个monadic函数返回m (Maybe b).但是,我希望它在导致函数返回Just值的第一个参数之后停止,之后不再执行,并返回该值.

好吧,只显示类型签名可能更容易:

findM :: (Monad m) => (a -> m (Maybe b)) -> [a] -> m (Maybe b)
Run Code Online (Sandbox Code Playgroud)

其中b是第一个Just值.将Maybe在结果是从findING(在一个空列表等的情况下),并没有任何跟Maybe在一元函数返回.

我似乎无法通过直接应用库函数来实现它.我可以用

findM f xs = fmap (fmap fromJust . find isJust) $ mapM f xs
Run Code Online (Sandbox Code Playgroud)

这将是有效的,但我测试了这一点似乎所有的monadic动作都是在调用之前执行的find,所以我不能在这里依赖懒惰.

ghci> findM (\x -> print x >> return (Just x)) [1,2,3]
1
2
3
-- returning IO (Just 1)
Run Code Online (Sandbox Code Playgroud)

实现此函数的最佳方法是什么,在第一次"正常"返回后不会执行monadic操作?可以做的事情:

ghci> findM …
Run Code Online (Sandbox Code Playgroud)

haskell

6
推荐指数
4
解决办法
941
查看次数

从一系列较小的实例中推断出一般的类型类实例?

这个标题肯定不是很具描述性,但我不知道如何在简短的标题中描述这一点.我很感激任何建议!

我将展示我的问题的一个非常简化的版本:)

所以我有一个类型类

class Known f a where
    known :: f a
Run Code Online (Sandbox Code Playgroud)

这应该能够在某个索引处生成给定类型的规范构造,对于使用GADT和东西很有用.我给的简化版本,与初步认识的部分.

所以显然有一个例子Proxy:

instance Known Proxy a where
    known = Proxy
Run Code Online (Sandbox Code Playgroud)

我们可以使用哪个:

> known :: Proxy Monad
Proxy
Run Code Online (Sandbox Code Playgroud)

但是这个类似HList的类型也有一个实例:

data Prod f :: [k] -> * where
    PNil :: Prod f '[]
    (:<) :: f a -> Prod f as -> Prod f (a ': as)

infixr 5 (:<)
Run Code Online (Sandbox Code Playgroud)

其中a Prod f '[a,b,c]大致相当于一个(f a, f b, f c)元组.相同的Functor,不同的类型.

编写实例非常简单:

instance …
Run Code Online (Sandbox Code Playgroud)

haskell typeclass gadt dependent-type

6
推荐指数
1
解决办法
75
查看次数

将此 FreeT(显式递归数据类型)函数转换为适用于 FT(教会编码)

我正在使用免费库中的FreeT类型来编写这个“运行”底层的函数:StateT

runStateFree
    :: (Functor f, Monad m)
    => s
    -> FreeT f (StateT s m) a
    -> FreeT f m (a, s)
runStateFree s0 (FreeT x) = FreeT $ do
    flip fmap (runStateT x s0) $ \(r, s1) -> case r of
      Pure y -> Pure (y, s1)
      Free z -> Free (runStateFree s1 <$> z)
Run Code Online (Sandbox Code Playgroud)

但是,我正在尝试将其转换为适用于FT,教堂编码的版本,而不是:

runStateF
    :: (Functor f, Monad m)
    => s
    -> FT f (StateT s m) a
    -> …
Run Code Online (Sandbox Code Playgroud)

haskell church-encoding free-monad

6
推荐指数
1
解决办法
181
查看次数

了解Ruby可枚举#map(具有更复杂的块)

假设我有一个功能

def odd_or_even n
  if n%2 == 0
    return :even
  else
    return :odd
  end
end
Run Code Online (Sandbox Code Playgroud)

我有一个简单的可枚举数组

simple = [1,2,3,4,5]
Run Code Online (Sandbox Code Playgroud)

我使用do-end块通过map运行它,使用我的函数:

simple.map do
  |n| odd_or_even(n)
end
# => [:odd,:even,:odd,:even,:odd]
Run Code Online (Sandbox Code Playgroud)

如果不首先定义函数,我怎么能这样做呢?例如,

# does not work
simple.map do |n|
  if n%2 == 0
    return :even
  else
    return :odd
  end
end

# Desired result:
# => [:odd,:even,:odd,:even,:odd]
Run Code Online (Sandbox Code Playgroud)

是不是有效的ruby,编译器甚至在考虑它时会生我的气.但是我如何实现同等类型的东西呢?

编辑

实际上,我的问题的解决方案对我来说比它背后的动机/推理要少得多,帮助我更多地了解ruby如何阻止工作:)

ruby language-features enumerable

5
推荐指数
2
解决办法
4002
查看次数

在Android中使用动态语言开始编程((J)Ruby,Clojure ......)

我一直在环顾四周,似乎无法找到任何看似"最新"的明确答案或进展.我见过一些有趣的项目,比如Mirah(以前的Duby),我正在调查一下.我见过JRuby用于将ruby编译成.dex失败了.我也一直在寻找Clojure,并意识到他们可能都与同一件事有关.

有没有人有关于如何开始并取得进展的任何提示?我不仅要问哪些框架可以提供帮助,更重要的是,我还要提出一个指导我的努力的理念/方向,以便开始.

java android dynamic-languages jruby clojure

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

Ruby 中优化的“多维”数组

从出生起,出于性能和内部数据结构的原因,我就一直被教导要避免像瘟疫一样的嵌套数组。所以我试图在 Ruby 中找到一个优化多维数据结构的好解决方案。

典型的解决方案可能涉及使用一维数组并通过 访问每个数组x*width + y

Ruby 能够重载该[]运算符,因此也许一个好的解决方案会涉及使用multi_dimensional_array[2,4]甚至使用 splat 来支持任意维度数量。(但实际上,我只需要二维)

是否已经有一个图书馆/宝石可以用于此目的?如果没有,写这篇文章的最佳方法是什么?

我的嵌套数组查找现在是我的计算密集型脚本的瓶颈,因此这是重要的事情,而不是过早优化的情况

如果有帮助的话,我的脚本主要使用随机查找和较少的遍历。

ruby multidimensional-array data-structures

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

在Blaze Html中转义&符号

我想将一个HTML实体(特别是&copy;)放入我的文档中.然而,如果我输入它并将其Text直接送入火焰组合器中,那么&符号将被转义为字面意义&copy;- 或者更确切地说,输出的HTML是&amp;copy;,这有点讽刺.

(如果我blaze-from-html在包含的HTML上使用&copy;,blaze-from-html将其转换为unicode版权符号" ©",这有效,但我仍然想知道是否可以使用blaze访问较低级别的HTML并输入文字html源代码&.)

haskell blaze-html

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

在Wai中间件中自定义响应头

我目前正在使用wai-middleware-static为我的服务器提供自定义页面.但是,我看到我的服务器favicon.ico在每个页面加载时都收到了请求,以及我的每一个Web字体,所以我决定检查响应头上的缓存设置,发现没有.

wai-middleware-static返回一个Middleware值,我认为这是对每个请求运行的中间件提供的函数的回调.有没有办法修改它以在响应头中添加以告诉浏览器缓存结果?

haskell haskell-wai

5
推荐指数
0
解决办法
506
查看次数