小编Eri*_*ikR的帖子

Euler 43 - 是否有一个monad来帮助写这个列表理解?

这是一种解决欧拉问题43的方法(如果没有给出正确答案,请告诉我).是否有monad或其他合成糖可以帮助跟踪notElem条件?

toNum xs = foldl (\s d -> s*10+d) 0 xs

numTest xs m = (toNum xs) `mod` m == 0

pandigitals = [ [d0,d1,d2,d3,d4,d5,d6,d7,d8,d9] |
                d7 <- [0..9],
                d8 <- [0..9], d8 `notElem` [d7],
                d9 <- [0..9], d9 `notElem` [d8,d7],
                numTest [d7,d8,d9] 17,
                d5 <- [0,5],  d5 `notElem` [d9,d8,d7],
                d3 <- [0,2,4,6,8], d3 `notElem` [d5,d9,d8,d7],
                d6 <- [0..9], d6 `notElem` [d3,d5,d9,d8,d7],
                numTest [d6,d7,d8] 13,
                numTest [d5,d6,d7] 11,
                d4 <- [0..9], d4 `notElem` [d6,d3,d5,d9,d8,d7],
                numTest [d4,d5,d6] 7,
                d2 …
Run Code Online (Sandbox Code Playgroud)

monads haskell list-comprehension

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

使用可变状态计算的惰性列表?

我想弄清楚如何在惰性列表的计算中使用可变状态.

例如,这是一个使用可变数组()实现的天真的Eratosthenes Sieve :

import Control.Monad.ST
import Data.Array.ST
import Data.Array.Unboxed
import Control.Monad
import Data.List

prime :: Int -> UArray Int Bool
prime n = runSTUArray $ do
    arr <- newArray ( 2 , n ) True :: ST s ( STUArray s Int Bool )
    forM_ ( takeWhile ( \x -> x*x <= n ) [ 2 .. n ] ) $ \i -> do
        ai <- readArray arr i
        when ( ai  ) $ forM_ [ i^2 …
Run Code Online (Sandbox Code Playgroud)

state haskell mutable lazy-evaluation

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

perl:内存文件句柄上的sysread?

不幸的是,这不起作用:

my $input = "this is a test";
open(my $fh, "<", \$input);
my $n = sysread($fh, $buf, 4);  # want $n == 4, $buf eq 'this'
Run Code Online (Sandbox Code Playgroud)

sysreadread预期的方式替换作品.

这是预期的吗?可以上班吗?我错过了什么吗?

perl

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

强制重新计算列表

search下面的函数搜索两个输入,这些输入在某些功能下具有相同的输出.在搜索期间,它在输入列表上迭代xs两次,并且该输入列表可能非常大,例如[0..1000000000].我宁愿使用内存来存储由碰撞创建的HashSet,而不是存储元素xs,我的理解是即使xs可以懒得计算它也会被保留,以防它需要调用find.

问题:

  • 这种理解是正确的吗?
  • 如果我将它作为列表保留,有一种方法可以xs重新计算,如果它被传递给find
  • 有没有我可以使用的替代数据结构,我可以xs控制使用的空间?xs仅用于指定要检查的输入.

请注意,没有类型限制xs- 它可以是任何类型的集合.

import Data.HashSet as Set
import Data.Hashable
import Data.List

search :: (Hashable b, Eq b) => (a->b) -> [a] -> Maybe (a,a)
search h xs =
  do x0 <- collision h xs
     let h0 = h x0
     x1 <- find (\x -> (h x) == h0) xs
     return (x0,x1)

collision :: (Hashable b, …
Run Code Online (Sandbox Code Playgroud)

haskell memory-management list

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

cygwin,perl,dos版本的abspath()?

运行cygwin perl时,有没有办法从cygwin路径获取DOS绝对路径?理想情况下,它也会解析cygwin符号链接.

例如:

'/cygdrive/c/foo' -> 'C://foo'
Run Code Online (Sandbox Code Playgroud)

perl cygwin path

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

cygwin tilde扩展无法在交互式shell中工作

出于某种原因,Cygwin中的波形扩展在提示符下对我不起作用:

$ ls ~
ls: cannot access : No such file or directory

$ ls ~/bin
(lists /bin not $HOME/bin)

$ echo $HOME
/home/myusername

$ echo ~


$
Run Code Online (Sandbox Code Playgroud)

在最后一种情况下,(echo ~)没有输出(除了几个空行之外).

我已经set expand-tilde on在我的$HOME/.inputrc文件中设置了.还有其他我需要配置的东西吗?

cygwin tilde-expansion

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

什么是`... | 在类型类声明中ab - > c`是什么意思?

可能重复:
Haskell类定义中的"|"是什么?

在下面(从Data.HList.HListPrelude,我如何解释这| l l' -> l''部分?

class HAppend l l' l'' | l l' -> l''
 where
  hAppend :: l -> l' -> l''
Run Code Online (Sandbox Code Playgroud)

它是标准Haskell(即Haskell 2010)的一部分还是扩展?

haskell typeclass

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

找到功能的GHC程序集

我想确定GHC为给定函数生成的汇编.

这里,例如,是一些代码(应该)在一个字中旋转位 - 它将位0移动到位12,位12到14,位14移回0,类似地移位位置1,18,13和6.

找到生成rot0cw.S文件中生成的程序集的最佳方法是 ghc -O2 -S ...什么?

我已经阅读了这个答案,但是..._rot0cw_closure在程序集输出中我没有看到任何答案.

import Data.Bits
import Data.Int (Int64)
import Text.Printf
import System.Environment

{-# INLINE maskbits #-}
-- set in word v the bits of b corresponding to the mask m
-- assume a bit in b is zero if not in the mask
maskbits v m b = (v .&. (complement m) .|. b)

{-# INLINE tb #-}
-- transfer bit i …
Run Code Online (Sandbox Code Playgroud)

assembly haskell ghc

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

如何推断liftM2(==)id和(\ x-> x + 1)id的类型

我正在学习哈斯克尔.有人可以解释这两种类型是如何推断的,Num(a - > a)是什么意思?

liftM2 (==) id :: Eq a => (a -> a) -> a -> Bool


(\x->x+1) id :: Num (a -> a) => a -> a
Run Code Online (Sandbox Code Playgroud)

haskell type-inference

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

创建一个填充字符的 numpy 数组

是否有另一种方法来创建一个填充有字符的 numpy 数组,例如:

p = np.array( [' '] * 12 )
Run Code Online (Sandbox Code Playgroud)

有没有办法使用np.full(...)

python arrays numpy

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