首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用Prelude.functions创建一个字符串列表?

如何用Prelude.functions创建一个字符串列表?
EN

Stack Overflow用户
提问于 2017-08-02 22:24:52
回答 2查看 576关注 0票数 1

我寻找一些等同于我们可以在Python中这样做的东西::

代码语言:javascript
复制
>>> print([func for func in dir(__builtins__) if func[0].islower()])
['abs', 'all', 'any', 'ascii', 'bin', 'bool', 'bytearray', 'bytes', 'callable', 'chr', 'classmethod', 'compile', 'complex', 'copyright', 'credits', 'delattr',
 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'exec', 'exit', 'filter', 'float', 'format', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len',
 'license', 'list', 'locals', 'map', 'max', 'memoryview', 'min', 'next', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'quit', 'range', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', 'sorted', 'staticmethod',
'str', 'sum', 'super', 'tuple', 'type', 'vars', 'zip']
>>> print(len.__doc__)
Return the number of items in a container.
>>> 

这不是一个关于“如何从图书馆的内容中获取信息”的问题,就像他们在这里谈论的那样:Is there a way to see the list of functions in a module, in GHCI?

它是关于在任何额外的导入之前,如何使用Prelude提供的所有函数名称(即字符串)创建一个列表。

我可以在Prelude.之后使用完成来查看这个确切的列表

代码语言:javascript
复制
    Prelude> Prelude.
    Display all 256 possibilities? (y or n)
    Prelude.!!                      Prelude.RealFrac                Prelude.fromEnum                Prelude.readLn
    Prelude.$                       Prelude.Right                   Prelude.fromInteger             Prelude.readParen
    Prelude.$!                      Prelude.Semigroup               Prelude.fromIntegral            Prelude.reads
    Prelude.&&                      Prelude.Show                    Prelude.fromRational            Prelude.readsPrec
    Prelude.*                       Prelude.ShowS                   Prelude.fst                     Prelude.realToFrac
    Prelude.**                      Prelude.String                  Prelude.gcd                     Prelude.recip
    Prelude.*>                      Prelude.Traversable             Prelude.getChar                 Prelude.rem
    Prelude.+                       Prelude.True                    Prelude.getContents             Prelude.repeat
    Prelude.++                      Prelude.Word                    Prelude.getLine                 Prelude.replicate
    Prelude.-                       Prelude.^                       Prelude.head                    Prelude.return
    Prelude..                       Prelude.^^                      Prelude.id                      Prelude.reverse
    Prelude./                       Prelude.abs                     Prelude.init                    Prelude.round
    Prelude./=                      Prelude.acos                    Prelude.interact                Prelude.scaleFloat
    Prelude.<                       Prelude.acosh                   Prelude.ioError                 Prelude.scanl
    Prelude.<$                      Prelude.all                     Prelude.isDenormalized          Prelude.scanl1
    Prelude.<$>                     Prelude.and                     Prelude.isIEEE                  Prelude.scanr
    Prelude.<*                      Prelude.any                     Prelude.isInfinite              Prelude.scanr1
    Prelude.<*>                     Prelude.appendFile              Prelude.isNaN                   Prelude.seq
    Prelude.<=                      Prelude.asTypeOf                Prelude.isNegativeZero          Prelude.sequence
    Prelude.<>                      Prelude.asin                    Prelude.iterate                 Prelude.sequenceA
    Prelude.=<<                     Prelude.asinh                   Prelude.last                    Prelude.sequence_
    Prelude.==                      Prelude.atan                    Prelude.lcm                     Prelude.show
    Prelude.>                       Prelude.atan2                   Prelude.length                  Prelude.showChar
    Prelude.>=                      Prelude.atanh                   Prelude.lex                     Prelude.showList
    Prelude.>>                      Prelude.break                   Prelude.lines                   Prelude.showParen
    Prelude.>>=                     Prelude.ceiling                 Prelude.log                     Prelude.showString
    Prelude.Applicative             Prelude.compare                 Prelude.logBase                 Prelude.shows
    Prelude.Bool                    Prelude.concat                  Prelude.lookup                  Prelude.showsPrec
    Prelude.Bounded                 Prelude.concatMap               Prelude.map                     Prelude.significand
    Prelude.Char                    Prelude.const                   Prelude.mapM                    Prelude.signum
    Prelude.Double                  Prelude.cos                     Prelude.mapM_                   Prelude.sin
    Prelude.EQ                      Prelude.cosh                    Prelude.mappend                 Prelude.sinh
    Prelude.Either                  Prelude.curry                   Prelude.max                     Prelude.snd
    Prelude.Enum                    Prelude.cycle                   Prelude.maxBound                Prelude.span
    Prelude.Eq                      Prelude.decodeFloat             Prelude.maximum                 Prelude.splitAt
    Prelude.False                   Prelude.div                     Prelude.maybe                   Prelude.sqrt
    Prelude.FilePath                Prelude.divMod                  Prelude.mconcat                 Prelude.subtract
    Prelude.Float                   Prelude.drop                    Prelude.mempty                  Prelude.succ
    Prelude.Floating                Prelude.dropWhile               Prelude.min                     Prelude.sum
    Prelude.Foldable                Prelude.either                  Prelude.minBound                Prelude.tail
    Prelude.Fractional              Prelude.elem                    Prelude.minimum                 Prelude.take
    Prelude.Functor                 Prelude.encodeFloat             Prelude.mod                     Prelude.takeWhile
    Prelude.GT                      Prelude.enumFrom                Prelude.negate                  Prelude.tan
    Prelude.IO                      Prelude.enumFromThen            Prelude.not                     Prelude.tanh
    Prelude.IOError                 Prelude.enumFromThenTo          Prelude.notElem                 Prelude.toEnum
    Prelude.Int                     Prelude.enumFromTo              Prelude.null                    Prelude.toInteger
    Prelude.Integer                 Prelude.error                   Prelude.odd                     Prelude.toRational
    Prelude.Integral                Prelude.errorWithoutStackTrace  Prelude.or                      Prelude.traverse
    Prelude.Just                    Prelude.even                    Prelude.otherwise               Prelude.truncate
    Prelude.LT                      Prelude.exp                     Prelude.pi                      Prelude.uncurry
    Prelude.Left                    Prelude.exponent                Prelude.pred                    Prelude.undefined
    Prelude.Maybe                   Prelude.fail                    Prelude.print                   Prelude.unlines
    Prelude.Monad                   Prelude.filter                  Prelude.product                 Prelude.until
    Prelude.MonadFail               Prelude.flip                    Prelude.properFraction          Prelude.unwords
    Prelude.Monoid                  Prelude.floatDigits             Prelude.pure                    Prelude.unzip
    Prelude.Nothing                 Prelude.floatRadix              Prelude.putChar                 Prelude.unzip3
    Prelude.Num                     Prelude.floatRange              Prelude.putStr                  Prelude.userError
    Prelude.Ord                     Prelude.floor                   Prelude.putStrLn                Prelude.words
    Prelude.Ordering                Prelude.fmap                    Prelude.quot                    Prelude.writeFile
    Prelude.Rational                Prelude.foldMap                 Prelude.quotRem                 Prelude.zip
    Prelude.Read                    Prelude.foldl                   Prelude.read                    Prelude.zip3
    Prelude.ReadS                   Prelude.foldl1                  Prelude.readFile                Prelude.zipWith
    Prelude.Real                    Prelude.foldr                   Prelude.readIO                  Prelude.zipWith3
    Prelude.RealFloat               Prelude.foldr1                  Prelude.readList                Prelude.||
    Prelude> Prelude.

所以现在我在vim上手动复制过去和清理,然后将这个列表复制回Prelude,如下所示:

代码语言:javascript
复制
Prelude> all_prelude_functions = ["acos", "acosh", "all", "and", "any", "appendFile", "asTypeOf", "asin", "asinh", "atan", "atan2", "atanh", "break", "ceiling", "compare", "concat", "concatMap"]
Prelude> all_prelude_functions
["acos","acosh","all","and","any","appendFile","asTypeOf","asin","asinh","atan","atan2","atanh","break","ceiling","compare","concat","concatMap"]
Prelude> 

我想直接在Prelude中创建此列表

EN

回答 2

Stack Overflow用户

发布于 2017-08-02 22:27:58

在GHCi中,您可以输入:browse Prelude来列出Prelude模块导出的所有内容。

本地安装的输出:

代码语言:javascript
复制
Prelude> :browse Prelude
(!!) :: [a] -> Int -> a
($) ::
  forall (r :: GHC.Types.RuntimeRep) a (b :: TYPE r).
  (a -> b) -> a -> b
($!) :: (a -> b) -> a -> b
(&&) :: Bool -> Bool -> Bool
(++) :: [a] -> [a] -> [a]
(.) :: (b -> c) -> (a -> b) -> a -> c
(<$>) :: Functor f => (a -> b) -> f a -> f b
(=<<) :: Monad m => (a -> m b) -> m a -> m b
class Functor f => Applicative (f :: * -> *) where
  pure :: a -> f a
  (<*>) :: f (a -> b) -> f a -> f b
  (*>) :: f a -> f b -> f b
  (<*) :: f a -> f b -> f a
  {-# MINIMAL pure, (<*>) #-}
data Bool = False | True
class Bounded a where
  minBound :: a
  maxBound :: a
  {-# MINIMAL minBound, maxBound #-}
data Char = GHC.Types.C# GHC.Prim.Char#
data Double = GHC.Types.D# GHC.Prim.Double#
data Either a b = Left a | Right b
class Enum a where
  succ :: a -> a
  pred :: a -> a
  toEnum :: Int -> a
  fromEnum :: a -> Int
  enumFrom :: a -> [a]
  enumFromThen :: a -> a -> [a]
  enumFromTo :: a -> a -> [a]
  enumFromThenTo :: a -> a -> a -> [a]
  {-# MINIMAL toEnum, fromEnum #-}
class Eq a where
  (==) :: a -> a -> Bool
  (/=) :: a -> a -> Bool
  {-# MINIMAL (==) | (/=) #-}
type FilePath = String
data Float = GHC.Types.F# GHC.Prim.Float#
class Fractional a => Floating a where
  pi :: a
  exp :: a -> a
  log :: a -> a
  sqrt :: a -> a
  (**) :: a -> a -> a
  logBase :: a -> a -> a
  sin :: a -> a
  cos :: a -> a
  tan :: a -> a
  asin :: a -> a
  acos :: a -> a
  atan :: a -> a
  sinh :: a -> a
  cosh :: a -> a
  tanh :: a -> a
  asinh :: a -> a
  acosh :: a -> a
  atanh :: a -> a
  GHC.Float.log1p :: a -> a
  GHC.Float.expm1 :: a -> a
  GHC.Float.log1pexp :: a -> a
  GHC.Float.log1mexp :: a -> a
  {-# MINIMAL pi, exp, log, sin, cos, asin, acos, atan, sinh, cosh,
              asinh, acosh, atanh #-}
class Foldable (t :: * -> *) where
  Data.Foldable.fold :: Monoid m => t m -> m
  foldMap :: Monoid m => (a -> m) -> t a -> m
  foldr :: (a -> b -> b) -> b -> t a -> b
  Data.Foldable.foldr' :: (a -> b -> b) -> b -> t a -> b
  foldl :: (b -> a -> b) -> b -> t a -> b
  Data.Foldable.foldl' :: (b -> a -> b) -> b -> t a -> b
  foldr1 :: (a -> a -> a) -> t a -> a
  foldl1 :: (a -> a -> a) -> t a -> a
  Data.Foldable.toList :: t a -> [a]
  null :: t a -> Bool
  length :: t a -> Int
  elem :: Eq a => a -> t a -> Bool
  maximum :: Ord a => t a -> a
  minimum :: Ord a => t a -> a
  sum :: Num a => t a -> a
  product :: Num a => t a -> a
  {-# MINIMAL foldMap | foldr #-}
class Num a => Fractional a where
  (/) :: a -> a -> a
  recip :: a -> a
  fromRational :: Rational -> a
  {-# MINIMAL fromRational, (recip | (/)) #-}
class Functor (f :: * -> *) where
  fmap :: (a -> b) -> f a -> f b
  (<$) :: a -> f b -> f a
  {-# MINIMAL fmap #-}
newtype IO a
  = GHC.Types.IO (GHC.Prim.State# GHC.Prim.RealWorld
                  -> (# GHC.Prim.State# GHC.Prim.RealWorld, a #))
type IOError = GHC.IO.Exception.IOException
data Int = GHC.Types.I# GHC.Prim.Int#
data Integer
  = integer-gmp-1.0.0.1:GHC.Integer.Type.S# !GHC.Prim.Int#
  | integer-gmp-1.0.0.1:GHC.Integer.Type.Jp# {-# UNPACK #-}integer-gmp-1.0.0.1:GHC.Integer.Type.BigNat
  | integer-gmp-1.0.0.1:GHC.Integer.Type.Jn# {-# UNPACK #-}integer-gmp-1.0.0.1:GHC.Integer.Type.BigNat
class (Real a, Enum a) => Integral a where
  quot :: a -> a -> a
  rem :: a -> a -> a
  div :: a -> a -> a
  mod :: a -> a -> a
  quotRem :: a -> a -> (a, a)
  divMod :: a -> a -> (a, a)
  toInteger :: a -> Integer
  {-# MINIMAL quotRem, toInteger #-}
data Maybe a = Nothing | Just a
class Applicative m => Monad (m :: * -> *) where
  (>>=) :: m a -> (a -> m b) -> m b
  (>>) :: m a -> m b -> m b
  return :: a -> m a
  fail :: String -> m a
  {-# MINIMAL (>>=) #-}
class Monoid a where
  mempty :: a
  mappend :: a -> a -> a
  mconcat :: [a] -> a
  {-# MINIMAL mempty, mappend #-}
class Num a where
  (+) :: a -> a -> a
  (-) :: a -> a -> a
  (*) :: a -> a -> a
  negate :: a -> a
  abs :: a -> a
  signum :: a -> a
  fromInteger :: Integer -> a
  {-# MINIMAL (+), (*), abs, signum, fromInteger, (negate | (-)) #-}
class Eq a => Ord a where
  compare :: a -> a -> Ordering
  (<) :: a -> a -> Bool
  (<=) :: a -> a -> Bool
  (>) :: a -> a -> Bool
  (>=) :: a -> a -> Bool
  max :: a -> a -> a
  min :: a -> a -> a
  {-# MINIMAL compare | (<=) #-}
data Ordering = LT | EQ | GT
type Rational = GHC.Real.Ratio Integer
class Read a where
  readsPrec :: Int -> ReadS a
  readList :: ReadS [a]
  GHC.Read.readPrec :: Text.ParserCombinators.ReadPrec.ReadPrec a
  GHC.Read.readListPrec :: Text.ParserCombinators.ReadPrec.ReadPrec
                             [a]
  {-# MINIMAL readsPrec | readPrec #-}
type ReadS a = String -> [(a, String)]
class (Num a, Ord a) => Real a where
  toRational :: a -> Rational
  {-# MINIMAL toRational #-}
class (RealFrac a, Floating a) => RealFloat a where
  floatRadix :: a -> Integer
  floatDigits :: a -> Int
  floatRange :: a -> (Int, Int)
  decodeFloat :: a -> (Integer, Int)
  encodeFloat :: Integer -> Int -> a
  exponent :: a -> Int
  significand :: a -> a
  scaleFloat :: Int -> a -> a
  isNaN :: a -> Bool
  isInfinite :: a -> Bool
  isDenormalized :: a -> Bool
  isNegativeZero :: a -> Bool
  isIEEE :: a -> Bool
  atan2 :: a -> a -> a
  {-# MINIMAL floatRadix, floatDigits, floatRange, decodeFloat,
              encodeFloat, isNaN, isInfinite, isDenormalized, isNegativeZero,
              isIEEE #-}
class (Real a, Fractional a) => RealFrac a where
  properFraction :: Integral b => a -> (b, a)
  truncate :: Integral b => a -> b
  round :: Integral b => a -> b
  ceiling :: Integral b => a -> b
  floor :: Integral b => a -> b
  {-# MINIMAL properFraction #-}
class Show a where
  showsPrec :: Int -> a -> ShowS
  show :: a -> String
  showList :: [a] -> ShowS
  {-# MINIMAL showsPrec | show #-}
type ShowS = String -> String
type String = [Char]
class (Functor t, Foldable t) => Traversable (t :: * -> *) where
  traverse :: Applicative f => (a -> f b) -> t a -> f (t b)
  sequenceA :: Applicative f => t (f a) -> f (t a)
  mapM :: Monad m => (a -> m b) -> t a -> m (t b)
  sequence :: Monad m => t (m a) -> m (t a)
  {-# MINIMAL traverse | sequenceA #-}
data Word = GHC.Types.W# GHC.Prim.Word#
(^) :: (Num a, Integral b) => a -> b -> a
(^^) :: (Fractional a, Integral b) => a -> b -> a
all :: Foldable t => (a -> Bool) -> t a -> Bool
and :: Foldable t => t Bool -> Bool
any :: Foldable t => (a -> Bool) -> t a -> Bool
appendFile :: FilePath -> String -> IO ()
asTypeOf :: a -> a -> a
break :: (a -> Bool) -> [a] -> ([a], [a])
concat :: Foldable t => t [a] -> [a]
concatMap :: Foldable t => (a -> [b]) -> t a -> [b]
const :: a -> b -> a
curry :: ((a, b) -> c) -> a -> b -> c
cycle :: [a] -> [a]
drop :: Int -> [a] -> [a]
dropWhile :: (a -> Bool) -> [a] -> [a]
either :: (a -> c) -> (b -> c) -> Either a b -> c
error ::
  forall (r :: GHC.Types.RuntimeRep) (a :: TYPE r).
  GHC.Stack.Types.HasCallStack =>
  [Char] -> a
errorWithoutStackTrace ::
  forall (r :: GHC.Types.RuntimeRep) (a :: TYPE r). [Char] -> a
even :: Integral a => a -> Bool
filter :: (a -> Bool) -> [a] -> [a]
flip :: (a -> b -> c) -> b -> a -> c
fromIntegral :: (Integral a, Num b) => a -> b
fst :: (a, b) -> a
gcd :: Integral a => a -> a -> a
getChar :: IO Char
getContents :: IO String
getLine :: IO String
head :: [a] -> a
id :: a -> a
init :: [a] -> [a]
interact :: (String -> String) -> IO ()
ioError :: IOError -> IO a
iterate :: (a -> a) -> a -> [a]
last :: [a] -> a
lcm :: Integral a => a -> a -> a
lex :: ReadS String
lines :: String -> [String]
lookup :: Eq a => a -> [(a, b)] -> Maybe b
map :: (a -> b) -> [a] -> [b]
mapM_ :: (Foldable t, Monad m) => (a -> m b) -> t a -> m ()
maybe :: b -> (a -> b) -> Maybe a -> b
not :: Bool -> Bool
notElem :: (Foldable t, Eq a) => a -> t a -> Bool
odd :: Integral a => a -> Bool
or :: Foldable t => t Bool -> Bool
otherwise :: Bool
print :: Show a => a -> IO ()
putChar :: Char -> IO ()
putStr :: String -> IO ()
putStrLn :: String -> IO ()
read :: Read a => String -> a
readFile :: FilePath -> IO String
readIO :: Read a => String -> IO a
readLn :: Read a => IO a
readParen :: Bool -> ReadS a -> ReadS a
reads :: Read a => ReadS a
realToFrac :: (Real a, Fractional b) => a -> b
repeat :: a -> [a]
replicate :: Int -> a -> [a]
reverse :: [a] -> [a]
scanl :: (b -> a -> b) -> b -> [a] -> [b]
scanl1 :: (a -> a -> a) -> [a] -> [a]
scanr :: (a -> b -> b) -> b -> [a] -> [b]
scanr1 :: (a -> a -> a) -> [a] -> [a]
seq :: a -> b -> b
sequence_ :: (Foldable t, Monad m) => t (m a) -> m ()
showChar :: Char -> ShowS
showParen :: Bool -> ShowS -> ShowS
showString :: String -> ShowS
shows :: Show a => a -> ShowS
snd :: (a, b) -> b
span :: (a -> Bool) -> [a] -> ([a], [a])
splitAt :: Int -> [a] -> ([a], [a])
subtract :: Num a => a -> a -> a
tail :: [a] -> [a]
take :: Int -> [a] -> [a]
takeWhile :: (a -> Bool) -> [a] -> [a]
uncurry :: (a -> b -> c) -> (a, b) -> c
undefined ::
  forall (r :: GHC.Types.RuntimeRep) (a :: TYPE r).
  GHC.Stack.Types.HasCallStack =>
  a
unlines :: [String] -> String
until :: (a -> Bool) -> (a -> a) -> a -> a
unwords :: [String] -> String
unzip :: [(a, b)] -> ([a], [b])
unzip3 :: [(a, b, c)] -> ([a], [b], [c])
userError :: String -> IOError
words :: String -> [String]
writeFile :: FilePath -> String -> IO ()
zip :: [a] -> [b] -> [(a, b)]
zip3 :: [a] -> [b] -> [c] -> [(a, b, c)]
zipWith :: (a -> b -> c) -> [a] -> [b] -> [c]
zipWith3 :: (a -> b -> c -> d) -> [a] -> [b] -> [c] -> [d]
(||) :: Bool -> Bool -> Bool
票数 3
EN

Stack Overflow用户

发布于 2017-08-03 23:23:14

正如我在回答您的问题时所展示的,How to know what are the full list of function availlable in an import?您可以使用ghc-mod。

在上面引用的答案中替换该行

输出<-运行"ghc-mod“”浏览“,"-d","Data.List”

使用

out <- run "ghc-mod" ["browse", "-d", "Prelude"]

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45463573

复制
相关文章

相似问题

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