小编dfe*_*uer的帖子

Web浏览器,检测是否安装了PDF阅读器?

有没有办法检查用户是否安装了PDF阅读器?也许使用ActiveX组件?

请你帮助我好吗?

browser pdf internet-explorer-8

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

AudioManager MODE_IN_CALL干扰

我正在使用AudioManager在拨打电话之前通过耳机播放声音,因此我使用AudioManager setMode(MODE_IN_CALL).

我没有任何问题,除了Galaxy S3,正确播放音乐后,铃声听起来非常扭曲,非常嘈杂.我读过setMode文档:

The audio mode encompasses audio routing AND the behavior of the telephony 
layer. Therefore this method should only be used by applications that replace
the platform-wide management of audio settings or the main telephony application.
In particular, the MODE_IN_CALL mode should only be used by the telephony
application when it places a phone call, as it will cause signals from the 
radio layer to feed the platform mixer.
Run Code Online (Sandbox Code Playgroud)

所以我怀疑可能有来自无线电层馈电平台混频器的信号.

所以我使用的代码是这样的:

am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
speakerWasOn = …
Run Code Online (Sandbox Code Playgroud)

android media-player android-audiomanager

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

什么是表示红黑树的最有效方法?

冈崎使用(基本上)

data Color = R | B
data RB a = L | T {-# UNPACK #-}!Color !(RB a) !a !(RB a)
Run Code Online (Sandbox Code Playgroud)

我知道在C中,颜色通常以更加繁琐的方式处理以节省空间,做一些事情,比如使指针的低位代表颜色(我想通常指向节点的指针编码它的颜色,但它也会可以通过使左或右指针来模拟Okasaki的结构一个节点代表它颜色).

显然,在Haskell中这种小小的变化是不可能的.那么,如何在Haskell中最有效地表示节点?

data RB' a = L | B !(RB a) !a !(RB a) | R !(RB a) !a !(RB a)
Run Code Online (Sandbox Code Playgroud)

似乎可能是合理的内存效率,但它似乎也可能使模式匹配相当冗长.

haskell

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

略微概括展开

Data.List 定义

unfoldr :: (b -> Maybe (a, b)) -> b -> [a]
unfoldr f b = case f b of
  Just (a,new_b) -> a : unfoldr f new_b
  Nothing -> []
Run Code Online (Sandbox Code Playgroud)

有许多功能几乎可以使用unfoldr,但在列表的最后有问题.一个简单的"修复"是

unfoldr' :: (b -> Either (a,b) [a]) -> b -> [a]
unfoldr' f b = case f b of
  Left (a, new_b) -> a : unfoldr' f new_b
  Right r         -> r
Run Code Online (Sandbox Code Playgroud)

这个功能有标准名称吗?它有不错的属性和良好的互动foldr吗?

haskell

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

如何在有文化的Haskell脚本中启用GHC扩展?

我正在研究一个有文化的Haskell脚本,该脚本定义了一个Grammar数据类型,该数据类型将加载到我的Mac上的GHCI(v.7.8.3)中.我试图在我的脚本中打开名为KindSignatures和GADT的语言扩展(我完全不熟悉这些)但我被建议包括该行

{-# LANGUAGE KindSignatures, GADTs #-}
Run Code Online (Sandbox Code Playgroud)

在我的脚本的顶部.但是我收到一条错误消息:

Grammars.lhs:5:3:
    Illegal kind signature ‘Grammar’
      (Use KindSignatures to allow kind signatures)
    In the data declaration for ‘Grammar’
Failed, modules loaded: none.
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我我做错了什么吗?还有关于KindSignatures或GADT的任何文档吗?我一直找不到多少.

haskell ghci

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

什么是代表自由团体的好方法?

很容易表示自由岩浆(二元叶子树),自由半群(非空列表)和自由幺半群(列表),并且不难证明它们实际上是他们声称的那样.但自由团体似乎更棘手.似乎至少有两种使用常规List (Either a)表示的方法:

  1. 在类型中编码要求,如果你有,Left a :: Right b :: ...那么Not (a = b)相反.构建这些似乎有点困难.
  2. 研究等价关系,允许任意插入/删除Left a :: Right a :: ...对(以及相反的方式).表达这种关系似乎非常复杂.

其他人有更好的主意吗?

编辑

我刚刚意识到唯一的答案所使用的选项(1)根本无法在最常规的设置中工作.特别是,如果不实施可判定的平等,就无法定义组操作!

编辑2

我应该首先想到Google.看起来Joachim Breitner 几年前在Agda做过,从他的介绍性描述来看,看起来他从选项1开始,但最终选择了选项2.我想我会自己尝试,如果我太卡住了我会看看他的代码.

agda dependent-type idris

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

是否有针对Applicative的翻转操作符?

运营商

$
. or <<<
<$>
<*>
=<<
<=<
Run Code Online (Sandbox Code Playgroud)

一起走得很好,每个人在某种意义上将左边的东西应用到右边的东西上.在考虑另一种方式时,我们有

&
>>>
>>=
>=>
Run Code Online (Sandbox Code Playgroud)

但有翻转的版本<$><*>

haskell applicative

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

榆树:我如何在elm-repl中找出Elm表达式或子表达式的类型?

如何在elm-repl中找出Elm表达式或子表达式的类型?

Haskell :type:t等同于Elm REPL?

elm

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

计算 e^x 的 Haskell 函数

实现一个函数,计算e^x的值,x是函数的一个参数,一个整数。为此,请使用泰勒级数展开来计算 e 的效力。除了指数 x 之外,该函数还将接收作为参数的级数项数,它将作为 n 的最大值运行。为了解决这个函数,必须使用递归。

我做的:

factorial 0 = 1
factorial n = n * factorial (n-1)

consigna3::Int->Int->Float
consigna3 _ 0 = 1
consigna3 x n = (fromIntegral(x^n) / fromIntegral(factorial n)) + consigna3 x (n-1)
Run Code Online (Sandbox Code Playgroud)

但是有些结果是错误的,这是我的预期:

Ejemplo 1: Main> funcion3 1 1
           2.0
Ejemplo 2: Main> funcion3 1 10
           2.718282
Ejemplo 3: Main> funcion3 2 10
           7.388997
Ejemplo 4: Main> funcion3 10 20
           21991.48
Ejemplo 5: Main> funcion3 10 30
           22026.46
Ejemplo 6: Main> funcion3 0 30
           1.0 …
Run Code Online (Sandbox Code Playgroud)

recursion haskell taylor-series

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

双向加法约束

最近关于 Reddit 的一个问题引发了关于如何产生约束函数的讨论

type AddUp :: Nat -> Nat -> Nat -> Constraint

-- given
data Nat = Z | S Nat
type family m + n where
  'Z + n = n
  'S m + n = 'S (m + n)
Run Code Online (Sandbox Code Playgroud)

以至于

  1. AddUp m n o意味着m + n = o.
  2. 任何关于mn和/ 或 的可用类型信息o都将尽可能地流向其他人。

最棘手的部分是#2,和那最棘手的部分是,如果我们知道,例如,m ~ 'S xn ~ 'S ('S y),那么我们就应该从推断AddUp m …

haskell typeclass type-families

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