我对monad是什么(一个为有用的计算构建提供上下文的参数化类型),为什么它存在(所以你可以做需要上下文的事情,比如IO),如何使用它(bind返回)变量与>>=),并且非常粗略地理解它在类别理论中的适用范围(保证函数上下文同质性的类别)**.
然而,就基础数据结构而言,monad是什么?因为它与一个applicative functor(看起来像一个列表)有关,我的猜测是GHC获取monad的内容并将它们放入某种链接列表中,并在整个计算过程中传递它们.
引擎盖下真的发生了什么?
**如果您了解更多,请随时纠正这些问题.
最近留下匿名的海报试图实现这样的阶乘函数:
f :: Int -> Int
f = fix f
Run Code Online (Sandbox Code Playgroud)
这显然不是很好.但后来我想知道:我能通过类型检查器吗?它的类型将揭示什么?
我有一个问题,我认为相当棘手.
标准前奏包含该功能
Run Code Online (Sandbox Code Playgroud)replicate :: Int -> a -> [a]以下看起来似乎是一个合理的定义
Run Code Online (Sandbox Code Playgroud)replicate n x = take n [x,x,..]但实际上这还不够.为什么不?
我知道该replicate函数定义为:
replicate :: Int -> a -> [a]
replicate n x = take n (repeat x)
Run Code Online (Sandbox Code Playgroud)
并repeat定义为:
repeat :: a -> [a]
repeat x = xs where xs = x:xs
Run Code Online (Sandbox Code Playgroud)
定义是否不充分(来自问题),因为它使用无限列表?
我曾被告知GAE是无国籍的.我一般都理解无状态的概念,但我可以在概念上将它应用于GAE类型系统.
我特意问这个问题,因为我开发的应用程序似乎存在干扰问题.也就是说,当两个或更多人同时使用它时,它会变得混乱.(我继续进行bug测试以确认错误仅在同时使用期间发生.)我认为理论上可能存在这样的干扰的两种方式:A,错误的GQL查询获取错误的db记录(我检查了这个,nope); 或b.在服务器级别.我的问题:后者究竟有可能吗?当应用程序正在服务时,一个用户是否可以通过改变程序中变量的状态来干扰另一个用户?或者,也许,无国籍状态会阻止这种情况吗?我很困惑,可能错误地提出了这个问题.合十礼.
我的互联网连接没有问题。但是,当我尝试更新netbeans插件或IDE本身时,每次都会得到此屏幕。

即使重新安装操作系统也无法解决此问题。一次又一次地得到相同的错误。我该如何解决?
我有一些自然数c.我想找到所有对自然数a and b,其中a < b,如a * b = c.
我有一个解决方案:
solve c = do solveHelper [1..c] c where
solveHelper xs c = do
x <- xs
(division, modulo ) <- return (c `divMod` x)
True <- return (modulo == 0)
True <- return (x <= division)
return (x, division)
Run Code Online (Sandbox Code Playgroud)
例:
*Main> solve 10
[(1,10),(2,5)]
Run Code Online (Sandbox Code Playgroud)
有没有办法加速我的代码,或者我应该使用更好的算法?
我正在学习Haskell中的异常如何工作.
当试图在Prelude中复制这个简单的例子时,我得到:
GHCi, version 7.10.2: http://www.haskell.org/ghc/ :? for help
Prelude> :m Control.Exception
Prelude Control.Exception> let x = 5 `div` 0
Prelude Control.Exception> let y = 5 `div` 1
Prelude Control.Exception> print x
*** Exception: divide by zero
Prelude Control.Exception> print y
5
Prelude Control.Exception> try (print x)
<interactive>:16:1:
No instance for (Show (IO (Either e0 ())))
arising from a use of `print'
In a stmt of an interactive GHCi command: print it
Prelude Control.Exception>
Run Code Online (Sandbox Code Playgroud)
为什么我得到任何情况下错误的try(print …
这可能有什么问题?我已经尝试了多种解决方案,但最终都会出现'模块'上的错误以及主要后面的=符号.有没有搞错?!?!?!
printTabuleiro :: [[Char]] -> IO()
printTabuleiro [] = []
printTabuleiro (l :lt) = putStr l : printTabuleiro lt
module Main where
main = let
a = ["#####\n","###o##\n"]
in do printTabuleiro a
Run Code Online (Sandbox Code Playgroud)
现在我得到了这个编译错误,我不明白这里的类型匹配问题.顺便说一句,我是相当新的,不习惯功能,请不要把我加入火星.
[1 of 1] Compiling Main ( visualisacao.hs, interpreted )
visualisacao.hs:14:27:
Couldn't match expected type ‘IO ()’ with actual type ‘[IO ()]’
In the expression: putStr l : printTabuleiro lt
In an equation for ‘printTabuleiro’:
printTabuleiro (l : lt) = putStr l : printTabuleiro lt
visualisacao.hs:14:38:
Couldn't match …Run Code Online (Sandbox Code Playgroud) 如果我组合两个fmaps
Prelude> :t (fmap.fmap)
(fmap.fmap)
:: (Functor f, Functor f1) => (a -> b) -> f1 (f a) -> f1 (f b)
Run Code Online (Sandbox Code Playgroud)
我得到一个函数,该函数将函数应用于 2 个嵌套结构级别内的值,f1并且f.
我可以使用它——这按我的预期工作:
Prelude> (fmap.fmap) (+1) [[1,2]]
[[2,3]]
Run Code Online (Sandbox Code Playgroud)
与我预期的推断类型(结果周围的 2 级结构)
Prelude> :t (fmap.fmap) (+1) [[1,2]]
(fmap.fmap) (+1) [[1,2]] :: Num b => [[b]]
Run Code Online (Sandbox Code Playgroud)
以下不起作用。我也期待这个(因为我们不能申请sum一个数字):
Prelude> (fmap.fmap) sum [[1,2]]
<interactive>:39:2: error:
• Could not deduce (Num (t0 b))
from the context: (Num (t b), Num b, Foldable t)
bound …Run Code Online (Sandbox Code Playgroud) 我试图理解为什么某个构造函数在一个表达式中被接受,但在另一个表达式中不被接受。我本以为它超出了两者的范围。我是 OCaml 的初学者(我主要使用 Haskell),所以我可能会错过一些对于有经验的人来说完全明显的东西。
type zero = Zero
type 'n succ = Succ
type 'n snat =
| SZero : zero snat
| SSucc : 'm snat -> 'm succ snat
module SimpleInduction (Pred : sig type 'n pred end) = struct
open Pred
type hyps =
{ base : zero pred
; step : 'm. 'm pred -> 'm succ pred}
let rec induct : type n. hyps -> n snat -> n pred =
fun h sn -> …Run Code Online (Sandbox Code Playgroud) haskell ×7
module ×2
brute-force ×1
compilation ×1
equation ×1
functor ×1
monads ×1
netbeans ×1
netbeans-7 ×1
ocaml ×1
recursion ×1
stateless ×1
windows ×1