小编scr*_*avy的帖子

检测Haskell中的底部值

我写了一个haskell函数,它将列表拆分xs(init xs, last xs)如下:

split xs = split' [] xs
    where
        split' acc (x:[]) = (reverse acc, x)
        split' acc (x:xs) = split' (x:acc) xs
Run Code Online (Sandbox Code Playgroud)

由于无法以这种方式拆分空列表,因此空列表不匹配.但是,我不想简单地使用error ...这个功能.因此我定义了以下内容:

split [] = ([], undefined)
Run Code Online (Sandbox Code Playgroud)

由于懒惰的评估,我可以定义一个安全init,它只返回空列表的空列表:

init' = fst . split
Run Code Online (Sandbox Code Playgroud)

如果我试图访问它,有什么方法可以检测到undefined,这样

last' xs
  | isUndefined (snd xs) = ...
  | otherwise            = ...
Run Code Online (Sandbox Code Playgroud)

我不知道MaybeEither的,而那些对于表达我想要的是更好的选择.但是我想知道是否有办法检测未定义的实际值,即捕获错误,如捕获异常.

haskell exception-handling

9
推荐指数
3
解决办法
1475
查看次数

Scala:`-` [dash,minus]命令不推荐使用`onFailure`,将在0.14.0中删除

当我sbt compile -feature在我的Scala项目上做的时候,我收到了一个神秘的警告:

The `-` command is deprecated in favor of `onFailure` and will be removed in 0.14.0
Run Code Online (Sandbox Code Playgroud)

我不知道那个破折号/减号命令是什么或它可能被使用的地方.在谷歌上搜索它是不可能的,也不可能为它编写代码库(只有/ so// many//破折号/).

如果至少我知道它的定义.我在scala doc中也找不到任何东西.

scala sbt scalac

9
推荐指数
1
解决办法
3149
查看次数

JavaScript中的Seedable随机数生成器

我正在寻找JavaScript中的随机数生成器,我可以使用某个种子初始化并给出确定性结果(根据该种子).它应该能够在一定范围内提供随机整数,但是我也可以使用随机数发生器来吐出双倍(就像Math.random()).

基本上我正在寻找java.util.Random的等价物,如Java World for JavaScript中所知.

JavaScript中已经内置了这样的东西吗?是否有一些(可能是HTML5相关的API)指定了这样的东西?有没有提供这种随机数发生器的库?

我正在用JavaScript实现遗传算法,我需要能够为相同的输入(包括种子)收集相同的结果用于研究.

javascript random

8
推荐指数
1
解决办法
6250
查看次数

Scala vs Haskell类型类:"catchall"实例

以下Haskell类型类和实例:

class Able a where
  able :: a -> Int

instance Able Int where
  able x = x
Run Code Online (Sandbox Code Playgroud)

通常被翻译成Scala,如下所示:

trait Able[A] {
  def able(a: A): Int
}

implicit object AbleInt extends Able[Int] {
  def able(a: Int) = a
}
Run Code Online (Sandbox Code Playgroud)

在Haskell中,我现在可以定义一种catch-all实例,从而为所有Maybe类型创建一个实例:

instance Able a => Able (Maybe a) where
  able (Just a) = able a
  able Nothing  = 0
Run Code Online (Sandbox Code Playgroud)

这定义的一个实例AbleMaybe Int,Maybe Bool等条件是在一个实例AbleInt,Bool等等.

如何在Scala中做到这一点?

haskell scala implicit typeclass scala-implicits

8
推荐指数
1
解决办法
199
查看次数

如何查看tomcat是否正在运行

在Windows中使用哪个命令来查找tomcat是否正在运行?

我们怎么知道JVM突然崩溃了?

谷歌搜索后我发布了它,我无法找到预期的结果.

java windows tomcat jvm

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

更改特定 Maven 插件的日志级别

我想更改特定 Maven 插件的日志级别,最好是在 pom.xml 中,不太理想,但仍然可以通过命令行开关接受。

特别是我想要一般信息,但只需要来自 maven-shade-plugin:3.1.0 的警告。

maven maven-shade-plugin

7
推荐指数
1
解决办法
3977
查看次数

直接分配最终变量和在构造函数中分配最终变量之间有区别吗?

最终变量的这两个初始化之间有区别value吗?

class Test {
    final int value = 7;
    Test() {}
}
Run Code Online (Sandbox Code Playgroud)

class Test {
    final int value;
    Test() {
        value = 7;
    }
}
Run Code Online (Sandbox Code Playgroud)

-

编辑:一个更复杂的例子,涉及子类.在这种情况下,"0"打印到stdout,但如果直接指定值,则打印7.

import javax.swing.*;
import java.beans.PropertyChangeListener;

class TestBox extends JCheckBox {

    final int value;

    public TestBox() {
        value = 7;
    }

    public void addPropertyChangeListener(PropertyChangeListener l) {
        System.out.println(value);
        super.addPropertyChangeListener(l); 
    }

    public static void main(String... args) {
        JFrame frame = new JFrame();
        JPanel panel = new JPanel();
        frame.setContentPane(panel);
        panel.add(new TestBox());
        frame.pack();
        frame.setVisible(true);
    } …
Run Code Online (Sandbox Code Playgroud)

java final initialization

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

Eclipse for Java中有哪些"不可避免的泛型类型问题"?

在" 错误/警告 "面板中设置Java编译器的首选项时,Eclipse可以配置为" 忽略不可避免的泛型类型问题 " .

Java中有哪些"不可避免的"泛型类型问题?忽视这些是安全的吗?他们什么时候出现?

java eclipse generics types

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

模板Haskell和隐式参数

有没有办法用隐式参数创建函数或使用模板haskell让绑定与隐式参数?

即使用模板haskell生成这样的签名是可能的:

 doSomething :: (?context :: Context) => m a
Run Code Online (Sandbox Code Playgroud)

或者像这样的调用:

 invoc = let ?context = newContext in doSomething
Run Code Online (Sandbox Code Playgroud)

我找不到合适的代数数据类型,也没有任何函数可以帮助我在模板haskellAPI文档中讨论这个主题.我正在使用GHC 7.4.2.

如果模板haskell中没有对此扩展的本机支持,是否还有其他可能在编译期间注入代码(可能类似于模板haskell中的一般"代码注入函数"?).

编辑:我尝试了评论中的建议,这是发生的事情:

runQ [d| f :: (?c :: String) => Int ; f = 7 |]

<interactive>:10:17: parse error on input `c'
Run Code Online (Sandbox Code Playgroud)

这有效:

 runQ [d| f :: Int ; f = 7|]
 [SigD f_0 (ConT GHC.Types.Int),ValD (VarP f_0) (NormalB (LitE (IntegerL 7))) []]
Run Code Online (Sandbox Code Playgroud)

似乎没有得到支持.

haskell template-haskell implicit-parameters

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

Haskell - 带有定制预处理器的包装cabal包

我已经实现了一个自定义预处理器,它可以创建*.hs文件,形成*.tpl文件.它Setup.hs通过使用a 指定Build-Type: Custom.一切正常,但我无法从中创建tar.gz包(使用cabal sdist).

Cabal抱怨说,它找不到预处理器生成的暴露模块.错误消息是

cabal: Error: Could not find module with any
suffix: ["gc","chs","hsc","x","y","ly","cpphs","hs","lhs"]
Run Code Online (Sandbox Code Playgroud)

我怎样才能让Cabal意识到模块没有丢失,或者可能将tpl添加到已知的文件扩展名,或者什么?

haskell cabal cabal-install

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