<commit_before>package monocle

import scalaz.Isomorphism.{<=>, <~>}
import scalaz.Leibniz.===
import scalaz.Liskov.<~<
import scalaz.{Applicative, Category, Functor, Maybe, Monoid, Split, \/}

/**
 * A [[PIso]] defines an isomorphism between types S, A and B, T:
 * <pre>
 *              get                           reverse.get
 *     -------------------->             -------------------->
 *   S                       A         T                       B
 *     <--------------------             <--------------------
 *       reverse.reverseGet                   reverseGet
 * </pre>
 *
 * In addition, if f and g forms an isomorphism between `A` and `B`, i.e. if `f . g = id` and `g . f = id`,
 * then a [[PIso]] defines an isomorphism between `S` and `T`:
 * <pre>
 *     S           T                                   S           T
 *     |           ↑                                   ↑           |
 *     |           |                                   |           |
 * get |           | reverseGet     reverse.reverseGet |           | reverse.get
 *     |           |                                   |           |
 *     ↓     f     |                                   |     g     ↓
 *     A --------> B                                   A <-------- B
 * </pre>
 *
 * [[Iso]] is a type alias for [[PIso]] where `S` = `A` and `T` = `B`:
 * {{{
 * type Iso[S, A] = PIso[S, S, A, A]
 * }}}
 *
 * A [[PIso]] is also a valid [[Getter]], [[Fold]], [[PLens]], [[PPrism]], [[POptional]], [[PTraversal]] and [[PSetter]]
 *
 * @see [[monocle.law.IsoLaws]]
 *
 * @tparam S the source of a [[PIso]]
 * @tparam T the modified source of a [[PIso]]
 * @tparam A the target of a [[PIso]]
 * @tparam B the modified target of a [[PIso]]
 */
abstract class PIso[S, T, A, B] extends Serializable { self =>

  /** get the target of a [[PIso]] */
  def get(s: S): A<commit_msg>fix #428 correct Iso javadoc<commit_after>package monocle

import scalaz.Isomorphism.{<=>, <~>}
import scalaz.Leibniz.===
import scalaz.Liskov.<~<
import scalaz.{Applicative, Category, Functor, Monoid, Split, \/}

/**
 * [[Iso]] is a type alias for [[PIso]] where `S` = `A` and `T` = `B`:
 * {{{
 * type Iso[S, A] = PIso[S, S, A, A]
 * }}}
 *
 * An [[Iso]] defines an isomorphism between a type S and A:
 * <pre>
 *             get
 *     -------------------->
 *   S                       A
 *     <--------------------
 *          reverseGet
 * </pre>
 *
 * A [[PIso]] allows to lift a function `f: A => B` to `S => T` and a function `g: T => S` to `B => A`
 * <pre>
 *                                                           g
 *     S           T                                   S <-------- T
 *     |           ↑                                   |           ↑
 *     |           |                                   |           |
 * get |           | reverseGet     reverse.reverseGet |           | reverse.get
 *     |           |                                   |           |
 *     ↓     f     |                                   ↓           |
 *     A --------> B                                   A           B
 * </pre>
 *
 * A [[PIso]] is also a valid [[Getter]], [[Fold]], [[PLens]], [[PPrism]], [[POptional]], [[PTraversal]] and [[PSetter]]
 *
 * @see [[monocle.law.IsoLaws]]
 *
 * @tparam S the source of a [[PIso]]
 * @tparam T the modified source of a [[PIso]]
 * @tparam A the target of a [[PIso]]
 * @tparam B the modified target of a [[PIso]]
 */
abstract class PIso[S, T, A, B] extends Serializable { self =>

  /** get the target of a [[PIso]] */
  def get(s: S): A
{'fraction_non_alphanumeric': 0.18916643278136402, 'fraction_numerical': 0.0008419870895312938, 'mean_word_length': 1.075713453698311, 'pattern_counts': {'":': 0, '<': 24, '<?xml version=': 0, '>': 26, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 29, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1680662', 'n_tokens_mistral': 1092, 'n_tokens_neox': 1059, 'n_words': 335}