不幸的是cabal-dev ghci在这个项目中不起作用,我收到一个错误:
Loading package download-0.3.2 ... linking ...
ghc: /home/stulli/haskell/ifdl/cabal-dev//lib/download-0.3.2/ghc-7.4.1/HSdownload-0.3.2.o: unknown symbol `stat64'
ghc: unable to load package `download-0.3.2'
Run Code Online (Sandbox Code Playgroud)
所以我尝试runhaskell,但它使用随cabal而不是cabal-dev安装的软件包因此失败.
更新:runhaskell产生相同的错误:
$ runhaskell -isrc:src/test -package-conf=cabal-dev/packages-7.4.1.conf src/test/Test.hs
Test.hs: /home/stulli/haskell/ifdl/cabal-dev//lib/download-0.3.2/ghc-7.4.1/HSdownload-0.3.2.o: unknown symbol `stat64'
Test.hs: Test.hs: unable to load package `download-0.3.2'
Run Code Online (Sandbox Code Playgroud)
另一方面,cabal-dev安装没有问题.
当我想重新编译xmonad以更改配置时,我得到了这个:
Implicit import declaration:
Ambiguous module name `Prelude':
it was found in multiple packages: base haskell98-2.0.0.0
Run Code Online (Sandbox Code Playgroud)
Xmonad是通过pacman安装的.当我收到此错误时,我从pacman中删除了xmonad,然后尝试安装xmonad.我再次得到了上述错误但我能够通过从cabal文件中删除haskell98来解决它.
现在我想用MOD-Q重新配置xmonad错误再次出现,我不知道如何解决这个问题.任何帮助赞赏.
我使用GHC 7.0.3版(来自Haskell平台)
我试图检查作为字符串提供的代码片段.
我发现包haskell-type- exts(hackage link)似乎提供了我需要的东西:用parseModuleAST构建typecheckModule可以应用的.但后来我不知道如何处理结果.这类型的Tc VarEnv地方Tc是一个单子.
该软件包提供了一个测试用例,其中使用了类似的东西:
ea <- runTc testEnv $ typecheckExp e
Run Code Online (Sandbox Code Playgroud)
但是runTc在一个隐藏的模块中,所以我不能使用它.这是我到目前为止的代码:
import Language.Haskell.Exts.Parser (parseModule, ParseResult(..))
import Language.Haskell.TypeCheck.TypeCheck
-- import Language.Haskell.TypeCheck.Monad --hidden module
main = do
let m = "myTest = map (+1) [1..10]"
let r = parseModule m
case r of
ParseOk res -> printStuff res
_ -> print "wtf"
printStuff r = do
let Right tc = return $ typecheckModule r
-- print …Run Code Online (Sandbox Code Playgroud) 我想跟踪状态monad的变化.这不起作用:
main :: IO ()
main = do
print $ snd $ execState compute initialState
traceThis :: (Show a) => a -> a
traceThis x = trace ("test: " ++ show x) x
compute :: State ([Row], Integer) String
compute = liftM traceThis $ get >>= \(rs, result) -> put (rs, result + 3) >> return "foo"
Run Code Online (Sandbox Code Playgroud)
没有打印任何内容(除了主函数中已正确更新的打印的最终结果).
跟踪状态的任何想法或替代方案?我想用它来检查项目euler解决方案的正确性.
我想执行一个基本的Ajax请求,就是这样.
我reflex用于前端和Scotty后端.Firefox Web控制台告诉我请求是成功的,我在那里看到了预期的结果.但网站切换Just "default"到Nothing而不是Just "success!".
这是一个完整的最小例子:
import Reflex (holdDyn)
import Reflex.Dom (button, el, mainWidget, display)
import Reflex.Dom.Xhr (performRequestAsync, xhrRequest, decodeXhrResponse)
import Reflex.Class (tag, constant)
import Data.Default (def)
main :: IO ()
main = do
mainWidget $ el "div" $ do
buttonEvent <- button "click me"
let defaultReq = xhrRequest "GET" "mystring" def --served by Scotty
asyncEvent <- performRequestAsync (tag (constant defaultReq) buttonEvent)
buttonDyn <- holdDyn (Just "default") $ fmap decodeXhrResponse …Run Code Online (Sandbox Code Playgroud) 在sys/inotify.h(inotify.h)中,定义了以下结构:
struct inotify_event
{
int wd; /* Watch descriptor. */
uint32_t mask; /* Watch mask. */
uint32_t cookie; /* Cookie to synchronize two events. */
uint32_t len; /* Length (including NULs) of name. */
char name __flexarr; /* Name. */
};
Run Code Online (Sandbox Code Playgroud)
我__flexarr在代码中找不到任何定义.我在哪里搜索它?
在一个不相关的项目中,我发现#define __flexarr [1]我认为它做了类似的事情,但这个定义对我来说没有多大意义(对C非常不熟悉).
我唯一知道的是你可以在其中存储不同长度的字符串,但我完全不了解它是如何/为何起作用的.
有人在乎解释吗?谢谢.
我使用脚手架网站,每当我在静态javascript文件中更改内容时,我必须停止开发服务器并执行'cabal install && yesod devel'以使更改生效.
有没有办法使用正常的 js/css而不是缓存版本,所以我不需要一直重新编译?
我在理解refRust中的模式时遇到了问题.我指的是https://rustbyexample.com/scope/borrow/ref.html
这是我不明白的代码:
let point = Point { x: 0, y: 0 };
let _copy_of_x = {
// `ref_to_x` is a reference to the `x` field of `point`
let Point { x: ref ref_to_x, y: _ } = point;
// Return a copy of the `x` field of `point`
*ref_to_x
};
Run Code Online (Sandbox Code Playgroud)
我得到的是最后一个let表达式(?)是某种模式匹配.所以我的理解ref ref_to_x应该等于原始0的x价值point.
但我不明白ref实际上是做什么的.当我添加这样的代码时:
println!("x: {}", point.x);
println!("ref_to_x: {}", ref_to_x);
println!("*ref_to_x: {}", *ref_to_x);
Run Code Online (Sandbox Code Playgroud)
我总是得到0,所以似乎没有区别.不知何故,我希望 …
首先,这是我的代码的最小示例:
{-# LANGUAGE GADTs #-}
-- package "url"
import Network.URL (exportURL, URL(..), URLType(..))
data MyURL a where
GalleryURL :: URL -> MyURL URL
PictureURL :: URL -> MyURL URL
url = URL { url_type = PathRelative,
url_path = "www.google.com",
url_params = []}
galleryURL = GalleryURL url
myExportURL :: MyURL a -> String
myExportURL (GalleryURL a) = exportURL a
myExportURL (PictureURL a) = exportURL a
main = print $ myExportURL galleryURL
Run Code Online (Sandbox Code Playgroud)
我使用GADT来避免混合不同类型的URL.myExportURL所有类型的URL 的功能都相同.有没有办法使用这样的东西:
myExportURL (_ a) = exportURL a …Run Code Online (Sandbox Code Playgroud)