小编asg*_*451的帖子

是否有可能在Haskell中"读取"一个函数?

新用户,半noobie Haskell程序员在这里.我一直在寻找"在48小时内自己编写一个方案",我发现虽然在实践中它会非常不安全,但看看Haskell程序是否可以"读取"一个函数会很有趣.

例如,read "+" :: Num a => a -> a -> a - (即(+)的类型)

但是,上面的例子不起作用.有任何想法吗?我知道在实践中这是一个非常愚蠢的事情,但如果有可能的话会很酷,对吧?

haskell

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

无法通过cabal安装sdl2

我正在尝试安装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)

haskell cabal cabal-install sdl-2

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

您可以在列表中使用特殊语法来自定义数据类型吗?

据称列表被定义为:data List a = Null | Cons a (List a),但它具有我们都知道的特殊语法.我可以看到如何:只是Cons类型构造函数的别名,但1)这个语法实现的方式/位置2)我可以为其他数据类型定义我自己的特殊语法,就像[whamlet|Hello World!|]Yesod使用的那样.

谢谢.

haskell ghc

3
推荐指数
2
解决办法
257
查看次数

Yesod/Persistent中的外键约束?

我正在尝试使用Database.Persistant为Scotty应用程序创建数据库,我无法弄清楚在表之间添加外键约束的语法.例如,我有一个User桌子和一个Post表,我想Post表有一个属性,authorId它引用UserIdUser.这可以在原始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 authorPost块中,它编译得很好,但没有任何反应; 不会发生迁移,也不会引入外键约束.

我究竟做错了什么?任何帮助或建议将不胜感激.

为了清楚起见,我想要的是Post中的author属性来引用User中的现有用户名.

sqlite haskell persistent yesod

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

为什么这适用于GHCi但不适用于Scotty?

我正在尝试创建一个列出给定目录内容的网页,但是我遇到了一个奇怪的问题:当我在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)

haskell haskell-wai scotty

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

我的#include 文件损坏了吗?

我一直在尝试使用 ioctl 来获取我的 wifi 连接状态,但遇到了一个问题:每当我这样做时#include <linux/wireless.h>,gcc 都会生成很多错误,例如

\n\n
/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                ^\n
Run Code Online (Sandbox Code Playgroud)\n\n

还有更多类似的。这是什么意思?我该怎么办?我在虚拟机中运行 Ubuntu 14.04 有关系吗?

\n\n

如果有帮助的话,我的代码很简单:

\n\n
#include <linux/wireless.h>\nint main() { return 0; }\n
Run Code Online (Sandbox Code Playgroud)\n\n

我正在编译gcc thing.c

\n\n

谢谢。

\n

c linux ubuntu wifi

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

标签 统计

haskell ×5

c ×1

cabal ×1

cabal-install ×1

ghc ×1

haskell-wai ×1

linux ×1

persistent ×1

scotty ×1

sdl-2 ×1

sqlite ×1

ubuntu ×1

wifi ×1

yesod ×1