新用户,半noobie Haskell程序员在这里.我一直在寻找"在48小时内自己编写一个方案",我发现虽然在实践中它会非常不安全,但看看Haskell程序是否可以"读取"一个函数会很有趣.
例如,read "+" :: Num a => a -> a -> a - (即(+)的类型)
但是,上面的例子不起作用.有任何想法吗?我知道在实践中这是一个非常愚蠢的事情,但如果有可能的话会很酷,对吧?
我正在尝试安装helm.当我尝试安装它时,我收到此错误:
$ cabal install helm
Resolving dependencies...
Configuring sdl2-1.1.0...
cabal: The pkg-config package 'sdl2' version >=2.0.3 is required but it could
not be found.
Failed to install sdl2-1.1.0
cabal: Error: some packages failed to install:
helm-0.6.1 depends on sdl2-1.1.0 which failed to install.
sdl2-1.1.0 failed during the configure step. The exception was:
ExitFailure 1
Run Code Online (Sandbox Code Playgroud)
当我自己安装sdl2时,我收到了类似的消息.
$ cabal install sdl2
Resolving dependencies...
Configuring sdl2-1.1.0...
cabal: The pkg-config package 'sdl2' version >=2.0.3 is required but it could
not be found. …Run Code Online (Sandbox Code Playgroud) 据称列表被定义为:data List a = Null | Cons a (List a),但它具有我们都知道的特殊语法.我可以看到如何:只是Cons类型构造函数的别名,但1)这个语法实现的方式/位置2)我可以为其他数据类型定义我自己的特殊语法,就像[whamlet|Hello World!|]Yesod使用的那样.
谢谢.
我正在尝试使用Database.Persistant为Scotty应用程序创建数据库,我无法弄清楚在表之间添加外键约束的语法.例如,我有一个User桌子和一个Post表,我想Post表有一个属性,authorId它引用UserId在User.这可以在原始SQL中很容易地完成,但我希望能够通过haskell访问数据而无需使用原始sql命令.此外,约束将是在数据库迁移时覆盖.这就是我目前定义数据库的方法:
share [mkPersist sqlSettings, mkMigrate "migrateAll"]
[persistLowerCase|
User
name String
email String
username String
Primary username
deriving Show
Post
title String
content T.Text
author String
deriving Show
|]
Run Code Online (Sandbox Code Playgroud)
这很好,但没有关键限制,这可能是一件非常糟糕的事情.如果我尝试在github上添加像wiki这样的外键约束,通过将该行添加Foreign User authorfk author到Post块中,它编译得很好,但没有任何反应; 不会发生迁移,也不会引入外键约束.
我究竟做错了什么?任何帮助或建议将不胜感激.
为了清楚起见,我想要的是Post中的author属性来引用User中的现有用户名.
我正在尝试创建一个列出给定目录内容的网页,但是我遇到了一个奇怪的问题:当我在GHCi中逐行运行时,代码会生成所需的输出,但是当它在运行中执行时Scotty实例,它产生不同的(错误的)输出.以下是代码的相关部分:
serveDir :: String -> ActionM ()
serveDir p = do let path = prefix ++ p
entries <- liftIO $ getDirectoryContents path
fs <- liftIO $ filterM (doesFileExist . ((++) prefix)) entries
ds <- liftIO $ filterM (doesDirectoryExist . ((++) prefix)) entries
liftIO $ print path >> print entries >> print fs >> print ds
blaze $ renderDir fs ds
where prefix = "static/"
Run Code Online (Sandbox Code Playgroud)
(do语句中的最后一行只是将它呈现为html.这有效,但正确的输出永远不会使它成为该函数)当我在GHCi中运行此函数的每一行时,我得到以下输出:
*Main> entries <- getDirectoryContents "static/stuff"
*Main> fs <- liftIO $ filterM (doesFileExist …Run Code Online (Sandbox Code Playgroud) 我一直在尝试使用 ioctl 来获取我的 wifi 连接状态,但遇到了一个问题:每当我这样做时#include <linux/wireless.h>,gcc 都会生成很多错误,例如
/usr/include/linux/wireless.h:869:18: error: field \xe2\x80\x98src_addr\xe2\x80\x99 has incomplete type\nstruct sockaddr src_addr;\n ^\n/usr/include/linux/wireless.h:880:18: error: field \xe2\x80\x98bssid\xe2\x80\x99 has incomplete type\nstruct sockaddr bssid;\n ^\nRun Code Online (Sandbox Code Playgroud)\n\n还有更多类似的。这是什么意思?我该怎么办?我在虚拟机中运行 Ubuntu 14.04 有关系吗?
\n\n如果有帮助的话,我的代码很简单:
\n\n#include <linux/wireless.h>\nint main() { return 0; }\nRun Code Online (Sandbox Code Playgroud)\n\n我正在编译gcc thing.c
谢谢。
\n