这是一种解决欧拉问题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) 我想弄清楚如何在惰性列表的计算中使用可变状态.
例如,这是一个使用可变数组(源)实现的天真的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) 不幸的是,这不起作用:
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)
sysread用read预期的方式替换作品.
这是预期的吗?可以上班吗?我错过了什么吗?
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) 运行cygwin perl时,有没有办法从cygwin路径获取DOS绝对路径?理想情况下,它也会解析cygwin符号链接.
例如:
'/cygdrive/c/foo' -> 'C://foo'
Run Code Online (Sandbox Code Playgroud) 出于某种原因,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文件中设置了.还有其他我需要配置的东西吗?
可能重复:
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)的一部分还是扩展?
我想确定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) 我正在学习哈斯克尔.有人可以解释这两种类型是如何推断的,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) 是否有另一种方法来创建一个填充有字符的 numpy 数组,例如:
p = np.array( [' '] * 12 )
Run Code Online (Sandbox Code Playgroud)
有没有办法使用np.full(...)?