小编Sim*_*mon的帖子

第一类功能和高阶功能之间的任何区别

我想知道第一类功能高阶功能之间是否存在差异.

我仔细阅读了这两个维基页面,看起来非常相似.如果他们谈论相同,为什么需要两个术语?

尝试谷歌但没有找到任何有用的东西.

functional-programming terminology

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

用AI方式解决Hangman问题

我把它命名为"AI方式",因为我正在考虑让应用程序在没有人类交互的情况下玩刽子手游戏.

场景是这样的:

  1. 一个可用的单词列表,其中包含数十万个英文单词.
  2. 应用程序将从列表中选择一定数量的单词,例如20.
  3. 应用程序对每个单词使用Hangman,直到WON或FAILURE.这里的限制是最大错误的错误猜测.26显然没有意义,让我们说6最大错误猜测.

我尝试了在wiki页面上提到的策略,但它不能很好地工作.基本成功率约为30%.

关于战略的任何建议/评论以及我应该挖掘哪些领域才能找到一个公平的好策略?

非常感谢.

-Simon

PS:看起来相当不错的JavaScript实现.(https://github.com/freizl/play-hangman-game)

algorithm

8
推荐指数
2
解决办法
6922
查看次数

如何从HackageDB中删除包?

我上传了一个名称错误(错字)的软件包到http://hackage.haskell.org/

为了不搞乱HackageDB,我想知道是否有任何删除该包的方法.

非常感谢你的帮助.

haskell hackage

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

如何在Haskell中创建异构列表?(最初是Java)

如何将以下Java实现转换为Haskell?

这里的主要目的是具有包含各种元素的列表,这些元素是特定接口的子类型.
我尝试在下面制作一个Haskell版本,但未达到我的目的.这里的要点是xs类型[Bar]而不是Foo a => [a]

这是否意味着Haskell不能这样做,我会以另一种方式思考吗?

Java的

interface Foo {
    void bar ();
}

public class Bar1 implements Foo {
    @Override
    public void bar() {
        System.out.println("I am bar 1 class");
    }   
}

public class Bar2 implements Foo {
    @Override
    public void bar() {
        System.out.println("I am bar 2 class");
    }   
}

public static void main(String[] args) {
    // The major purpose here is having a list 
    // that contains elements which are sub-type of "Foo" …
Run Code Online (Sandbox Code Playgroud)

haskell typeclass

5
推荐指数
3
解决办法
2082
查看次数

是否可以在Haskell中分析空间使用情况

Erik讲座第12章通过介绍示例函数提到"改善空间使用" sumWith.

我代表懒惰版本和严格版本,如下所示.

sumWith1 v [] = v
sumWith1 v (x:xs) = sumWith1 (v+x) xs

sumWith2 v [] = v
sumWith2 v (x:xs) = (sumWith2 $! (v+x)) xs

test = sumWith1 0 [1..200000000]
Run Code Online (Sandbox Code Playgroud)

我想严格版本应该在某个级别上提高性能,因此我尝试验证杠杆GHC分析工具.

$ ghc --make -O2 -prof -auto-all -rtsopts -o test1
$ ./test1 +RTS -p -RTS
Run Code Online (Sandbox Code Playgroud)

更改sumWith1sumWith2at testfunction并再次执行test2.

以下是分析结果:http://pastie.org/4720019.

通过查看%alloc列,我看不出这两个函数之间的差异.

我的问题是如何改进测试用例以找到一些区别.换句话说,是否可以分析这种情况下的空间使用情况?

谢谢.

haskell

4
推荐指数
1
解决办法
188
查看次数

上传包到hackages时没有生成haddock

在我将包上传到hackages之后,它没有像其他包一样生成haddock.

我错过了什么?

我做的是:

  1. cabal dist 以及在dist目录下生成的包.
  2. 打开hackage web上传界面并上传包.
  3. 打开URL并成功上传包但没有haddock.(包里有几个文档)

谢谢.

haskell cabal hackage

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

`par`是否会创建另一个线程?

我的理解par是它将在另一个核心中创建一个线程来执行.

但是我没有通过以下测试代码来证明这种理解,因为结果显示只有一个线程正在运行.

你能帮我弄清楚这里有什么问题吗?

import Control.Monad
import Control.Parallel
import Control.Concurrent
import System.IO.Unsafe

fib :: Int -> Int 
fib 0 = 1 
fib 1 = 1 
fib n = (fib (n-1)) + (fib (n - 2))

test :: String -> [Int] -> IO () 
test _ [] = return () 
test name (a:xs) = do 
    tid <- myThreadId 
    print $ (show tid) ++ "==>" ++ (show a) ++ "==>" ++ (show $ fib a) ++ "==>" ++ name
    x `par` …
Run Code Online (Sandbox Code Playgroud)

parallel-processing multithreading haskell multicore

2
推荐指数
1
解决办法
312
查看次数