小编Pau*_*aul的帖子

Haskell 懒惰和 seq

我试图理解懒惰和seqHaskell:

  • 在(1)中,v在基本情况下的打印需要之前不进行评估是否正确v

  • 在(2)中,v'在每次递归调用之前评估是否正确,以便v在基本情况下不需要评估?如果没有,我如何实施这种严格的评估?

  • 我可以使用任何分析工具来为自己确认这两点吗?


main = do
  f [1, 2, 3, 4] 0
  f' [1, 2, 3, 4] 0

g x = 42 * x -- this could be whatever

-- 1. lazy
f [] v = print v -- base case
f (x:xs) v = f xs v'
  where v' = v + g x

-- 2. strict
f' [] v = print v -- base case
f' (x:xs) …
Run Code Online (Sandbox Code Playgroud)

haskell lazy-evaluation

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

如何将[IO X]转换为IO [X]

我有一些数据类型X和一个返回IO [X]的函数,但我的计算当前正在返回[IO X].将[IO X]转换为IO [X]的一般方法是什么?

haskell

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

在返回类型上丢失IO

我在这段代码中遇到了函数共识问题.共识的递归定义是返回[Action]而不是IO [Action].

我是Haskell的新手,不明白为什么会这样.我的印象是,无法从返回值中删除IO.

import System.Random (randomRIO)
import Data.Ord (comparing)
import Data.List (group, sort, maximumBy)

data Action = A | B deriving (Show, Eq, Ord)

-- Sometimes returns a random action
semiRandomAction :: Bool -> Action -> IO (Action)
semiRandomAction True a = return a
semiRandomAction False _ = do
  x <- randomRIO (0, 1) :: IO Int
  return $ if x == 0 then A else B

-- Creates a sublist for each a_i in ls …
Run Code Online (Sandbox Code Playgroud)

haskell

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

无法迭代 PyTorch MNIST 数据集

我正在尝试在 Pytorch 中加载 MNIST 数据集,并使用内置数据加载器来迭代训练示例。但是,在迭代器上调用 next() 时出现错误。我用 CIFAR10 没有这个问题。

import torch
import torchvision
import torchvision.transforms as transforms

transform = transforms.Compose(
    [transforms.ToTensor(),
     transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])

batch_size = 128

dataset = torchvision.datasets.MNIST(root='./data', train=True, transform=transform, download=True)
dataloader = torch.utils.data.DataLoader(dataset, batch_size=batch_size, shuffle=True, num_workers=4)
dataiter = iter(dataloader)
dataiter.next() # ERROR
# RuntimeError: output with shape [1, 28, 28] doesn't match the broadcast shape [3, 28, 28]
Run Code Online (Sandbox Code Playgroud)

我正在使用 Python 3.7.3 和 PyTorch 1.1.0

python-3.x pytorch

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

导出枚举的数据的基数

获取数据类型派生枚举的基数的建议方法是什么?

--given    
data ABC = A | B | C deriving (Enum)
--want 3
Run Code Online (Sandbox Code Playgroud)

haskell

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

标签 统计

haskell ×4

lazy-evaluation ×1

python-3.x ×1

pytorch ×1