我正在尝试用Java创建我的第一个程序.目标是编写一个浏览网站并为我下载文件的程序.但是,我不知道如何使用Java与互联网进行交互.谁能告诉我哪些主题可以查找/阅读或推荐一些好的资源?
如果我知道某个值可能会在它第一次遇到垃圾收集器时存活下来,有没有办法让GHC知道,所以它可以直接在托儿所外的某个地方分配它?例如,如果我用一堆较小的碎片构建一个大型结构,我知道每个碎片至少会持续到整个结构完成.
删除Firefox中的所有历史记录(删除所有cookie),禁用所有加载项和插件,然后重新启动Firefox.不要去任何地方等待大约10-15分钟.转到选项 - > ...->显示Cookie.您将在google.com域中看到名为PREF的 cookie .
1)有人可以解释这个cookie出现的方式和原因吗?
2)如何摆脱这个?
ps我没有安装任何谷歌桌面应用程序.Firefox google搜索栏也被删除了.
有许多仿函数看起来像容器(列表,序列,映射等),还有许多仿函数没有(状态转换器IO,解析器等).我还没有看到任何看起来像容器的非平凡Foldable或Traversable实例(至少如果你斜视一下).有存在吗?如果没有,我很想更好地了解他们为什么不能这样做.
一个最近的问题通常问Haskell的各种类之间的边界.我提出了Handler一个有效的例子,Functor没有合理的Apply**实例,其中
class Functor f => Apply f where
(<.>) :: f (a -> b) -> f a -> f b
-- optional bits omitted.
Run Code Online (Sandbox Code Playgroud)
但是,我还没有找到一个Functor无法成为有效(如果无意义)实例的有效示例Apply.这一事实Apply 已经过(见更新),但单行法,
(.) <$> u <.> v <.> w = u <.> (v <.> w)
Run Code Online (Sandbox Code Playgroud)
似乎使这个相当棘手.
pigworker(康纳·麦克布莱德)前面举了一个例子的Functor,是不是Applicative,但他依靠pure这样做,这不是可用Apply.
**后来我意识到实际上可能有一个明智的(虽然有点奇怪)Apply实例Handler,从概念上收集同时异常.
Edward Kmett现在接受 …
GHC目前实施>>为
(>>) :: m a -> m b -> m b
m >> k = m >>= \_ -> k
Run Code Online (Sandbox Code Playgroud)
为什么不这样做呢?
(>>) :: m a -> m b -> m b
m >> k = m *> k
Run Code Online (Sandbox Code Playgroud)
现在,我在想>>=什么*>都没有.
但是所有的东西都是按语法编写的(如在类型方面),所以很难说明为什么它不起作用.也许monad实例做了一些应用实例没有的计算,但我认为这会破坏该类型的语义.
lensoffer holesOf,这是这个假设函数的一个更通用和更强大的版本:
holesList :: Traversable t
=> t a -> [(a, a -> t a)]
Run Code Online (Sandbox Code Playgroud)
给定一个容器,holesList生成一个容器元素列表以及替换这些元素的函数.
holesList类似于真实的类型holesOf,无法捕获生成的对数等于容器元素数的事实.因此,更美丽的类型将是
holes :: Traversable t
=> t a -> t (a, a -> t a)
Run Code Online (Sandbox Code Playgroud)
我们可以holes通过使用holesList制作一个列表然后遍历来State重新填充元素来实现.但这有两个原因令人不满意,其中一个原因具有实际后果:
slurping代码将有一个无法访问的错误调用来处理在遍历完成之前列表为空的情况.这很恶心,但对使用该功能的人来说可能并不重要.
无限延伸到左侧或左下方的容器根本不起作用.向左延伸很远的容器处理效率非常低.
我想知道是否有任何办法解决这些问题.使用Magma镜头之类的东西很有可能捕捉到遍历的形状:
data FT a r where
Pure :: r -> FT a r
Single :: a -> FT a a
Map :: (r -> s) -> FT a r -> FT …Run Code Online (Sandbox Code Playgroud) 我的工作列表融合规则fromListN中Data.Primitive.Array,和我有点卡住了.该函数如下所示:
fromListNArray :: Int -> [a] -> Array a
fromListNArray !n l =
createArray n fromListN_too_short $ \mi ->
let go i (x:xs)
| i < n = writeArray mi i x >> go (i+1) xs
| otherwise = fromListN_too_long
go i [] = unless (i == n) fromListN_too_short
in go 0 l
{-# NOINLINE fromListNArray #-}
Run Code Online (Sandbox Code Playgroud)
fromListN_too_short并且fromListN_too_long只是错误调用.
我的重写规则是
{-# RULES
"fromListNArray/foldr" [~1] forall n xs.
fromListNArray n xs = createArray n fromListN_too_short …Run Code Online (Sandbox Code Playgroud) 该streaming套餐提供了一项zipsWith功能
zipsWith
:: (Monad m, Functor h)
=> (forall x y. f x -> g y -> h (x, y))
-> Stream f m r -> Stream g m r -> Stream h m r
Run Code Online (Sandbox Code Playgroud)
还有一个稍微简化的版本,
zipsWith'
:: Monad m
=> (forall x y p. (x -> y -> p) -> f x -> g y -> h p)
-> Stream f m r -> Stream g m r -> Stream h m r
Run Code Online (Sandbox Code Playgroud)
这些可以很容易地 …
作为一个 uni 赋值,我应该编写一个带有类型声明的函数:
pi_approx :: Int -> Double
Run Code Online (Sandbox Code Playgroud)
这是我的第一次尝试:
pi_approx :: Int -> Double
pi_approx x = let total = sum [1 / (y^2) | y <- [1..x]]
in sqrt (6 * total)
Run Code Online (Sandbox Code Playgroud)
这引发了以下错误:
pi_approx.hs:4:8: error:
* Couldn't match expected type `Double' with actual type `Int'
* In the expression: sqrt (6 * total)
In the expression:
let total = sum [1 / (y ^ 2) | y <- ...] in sqrt (6 * total)
In an equation for `pi_approx': …Run Code Online (Sandbox Code Playgroud) haskell ×8
ghc ×3
cookies ×1
firefox ×1
fold ×1
free-monad ×1
functor ×1
haskell-lens ×1
java ×1
traversable ×1
traversal ×1
types ×1