<commit_before>{-# LANGUAGE CPP #-}
{-# LANGUAGE Rank2Types #-}
{-# LANGUAGE LiberalTypeSynonyms #-}
#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 704
{-# LANGUAGE Safe #-}
#endif
-----------------------------------------------------------------------------
-- |
-- Module      :  Control.Lens
-- Copyright   :  (C) 2012 <NAME>
-- License     :  BSD-style (see the file LICENSE)
-- Maintainer  :  <NAME> <<EMAIL>>
-- Stability   :  provisional
-- Portability :  Rank2Types
--
--
-- This package provides lenses, setters, getters, traversals and folds that
-- can all be composed automatically with each other (and other lenses from 
-- other van Laarhoven lens libraries) using @(.)@ from Prelude, while
-- reducing the complexity of the API.
--
-- Note: If you merely want your library to _provide_ lenses you may not 
-- have to actually import _any_ lens library, for a 
-- @'Simple' 'Lens' Bar Foo@, just export a function with the signature:
--
-- > foo :: Functor f => (Foo -> f Foo) -> Bar -> f Bar
--
-- and then you can compose it with other lenses with (.) without needing
-- anything from this library at all.
--
-- Usage:
--
-- You can derive lenses automatically for many data types:
--
-- > import Control.Lens.TH
-- > data Foo a = Foo { _fooArgs :: [String], _fooValue :: a }
-- > makeLenses ''Foo
--
-- This defines the following lenses:
--
-- > fooArgs :: Lens (Foo a) [String]
-- > fooValue :: LensFamily (Foo a) (Foo b) a b
--
----------------------------------------------------------------------------
module Control.Lens
  (
  -- * Lenses
    Lens

  -- * "Simple" Lenses
  , Simple

  -- ** Constructing Lenses
  , lens
  , iso
  , clone

  -- * Getters
  , Getter
  , to

  -- ** Getting Values<commit_msg>explain the restricted type signatures<commit_after>{-# LANGUAGE CPP #-}
{-# LANGUAGE Rank2Types #-}
{-# LANGUAGE LiberalTypeSynonyms #-}
#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 704
{-# LANGUAGE Safe #-}
#endif
-----------------------------------------------------------------------------
-- |
-- Module      :  Control.Lens
-- Copyright   :  (C) 2012 <NAME>
-- License     :  BSD-style (see the file LICENSE)
-- Maintainer  :  <NAME> <<EMAIL>>
-- Stability   :  provisional
-- Portability :  Rank2Types
--
--
-- This package provides lenses, setters, getters, traversals and folds that
-- can all be composed automatically with each other (and other lenses from 
-- other van Laarhoven lens libraries) using @(.)@ from Prelude, while
-- reducing the complexity of the API.
--
-- Note: If you merely want your library to _provide_ lenses you may not 
-- have to actually import _any_ lens library, for a 
-- @'Simple' 'Lens' Bar Foo@, just export a function with the signature:
--
-- > foo :: Functor f => (Foo -> f Foo) -> Bar -> f Bar
--
-- and then you can compose it with other lenses with (.) without needing
-- anything from this library at all.
--
-- Usage:
--
-- You can derive lenses automatically for many data types:
--
-- > import Control.Lens.TH
-- > data Foo a = Foo { _fooArgs :: [String], _fooValue :: a }
-- > makeLenses ''Foo
--
-- This defines the following lenses:
--
-- > fooArgs :: Lens (Foo a) [String]
-- > fooValue :: LensFamily (Foo a) (Foo b) a b
--
--
-- The combinators here have unusually specific type signatures, so for
-- particularly tricky ones, I've tried to list the simpler type signatures
-- you might want to pretend the combinators have.
--
----------------------------------------------------------------------------
module Control.Lens
  (
  -- * Lenses
    Lens

  -- * "Simple" Lenses
  , Simple

  -- ** Constructing Lenses
  , lens
  , iso
  , clone

  -- * Getters
  , Getter
  , to

  -- ** Getting Values
{'fraction_non_alphanumeric': 0.20882669537136705, 'fraction_numerical': 0.004843918191603875, 'mean_word_length': 2.036764705882353, 'pattern_counts': {'":': 0, '<': 11, '<?xml version=': 0, '>': 33, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7617369', 'n_tokens_mistral': 1177, 'n_tokens_neox': 1104, 'n_words': 406}