首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用lambdabot在ghci中打印函数/类的定义

用lambdabot在ghci中打印函数/类的定义
EN

Stack Overflow用户
提问于 2014-05-31 12:16:52
回答 1查看 191关注 0票数 3

如何查看在我的项目或阴谋依赖项中定义的函数/类等的ghci (使用lambdabot 2.5 GHCi关于酸)中的源定义?例如,假设我有:

代码语言:javascript
复制
module Main where
import System.Random

gen = (random (mkStdGen 0)) :: (Bool,StdGen)

myadd :: Int -> Int
myadd x = 2 * x

main = do
  print "finished"

然后我可以获得关于myaddrandom的信息,但是我无法打印源代码。下面是我在ghci (使用lambdabot)中可以做的事情:

代码语言:javascript
复制
*Main GOA> :src foldr
 foldr f z []     = z
foldr f z (x:xs) = f x (foldr f z xs)
*Main GOA> :i myadd
myadd :: Int -> Int     -- Defined at test.hs:7:1
*Main GOA> :src myadd
 Source not found. I don't think I can be your friend on Facebook anymore.
*Main GOA> :i random
class Random a where
  ...
  random :: RandomGen g => g -> (a, g)
  ...
    -- Defined in ‘System.Random’
*Main GOA> :src random
 Source not found. Listen, broccoli brains, I don't have time to listen to this trash.

lambdabot似乎能够打印foldr的定义,但不能打印项目中定义的函数(myadd)或阴谋退步(random)中的函数。

我能用lambdabot的一些特性打印出像myaddrandom这样的东西的定义吗?我知道您可以将Hoogle用于random,但我想特别了解是否有任何方法可以使用ghci或lambdabot打印源定义。

编辑

自从发帖以来,我发现了Emacs/下Haskell过程和一些功能,它们似乎实现了上述的一些功能。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-01 13:44:55

Lambdabot的src不能这么做。它基于lambdabot本身附带的函数定义的简短列表,cf。https://github.com/mokus0/lambdabot/blob/master/lambdabot/State/source。因此,有时它是存在的,例如,foldr目前在ghc的库中被定义为

代码语言:javascript
复制
foldr k z = go
      where
        go []     = z
        go (y:ys) = y `k` go ys
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23969963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档