如何查看在我的项目或阴谋依赖项中定义的函数/类等的ghci (使用lambdabot 2.5 GHCi关于酸)中的源定义?例如,假设我有:
module Main where
import System.Random
gen = (random (mkStdGen 0)) :: (Bool,StdGen)
myadd :: Int -> Int
myadd x = 2 * x
main = do
print "finished"然后我可以获得关于myadd和random的信息,但是我无法打印源代码。下面是我在ghci (使用lambdabot)中可以做的事情:
*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的一些特性打印出像myadd和random这样的东西的定义吗?我知道您可以将Hoogle用于random,但我想特别了解是否有任何方法可以使用ghci或lambdabot打印源定义。
编辑
自从发帖以来,我发现了Emacs/下Haskell过程和一些功能,它们似乎实现了上述的一些功能。
发布于 2014-06-01 13:44:55
Lambdabot的src不能这么做。它基于lambdabot本身附带的函数定义的简短列表,cf。https://github.com/mokus0/lambdabot/blob/master/lambdabot/State/source。因此,有时它是存在的,例如,foldr目前在ghc的库中被定义为
foldr k z = go
where
go [] = z
go (y:ys) = y `k` go yshttps://stackoverflow.com/questions/23969963
复制相似问题