<commit_before>//
//  TypeEquality.swift
//  swiftz
//
//  Created by <NAME> on 19/06/2014.
//  Copyright (c) 2014 <NAME>. All rights reserved.
//

import Foundation

// find more info at http://hackage.haskell.org/package/type-equality-0.1.2/docs/Data-Type-Equality.html

protocol TypeEquality {
  typealias A
  typealias B
  func apply(a: A) -> B
}

struct Refl<X> : TypeEquality {
  typealias A = X
  typealias B = X
  func apply(a: A) -> B {
    return a
  }
}<commit_msg>Update TypeEquality.swift<commit_after>//
//  TypeEquality.swift
//  swiftz
//
//  Created by <NAME> on 19/06/2014.
//  Copyright (c) 2014 <NAME>. All rights reserved.
//

import Foundation

// WARNING: A current bug in the type checker means using TypeEquality can
// cause type errors to bypass the type checker.
// See https://github.com/maxpow4h/swiftz/issues/45 for more information.
// Instead, it is recommended to use the `identity` function for evidence.
// find more info at http://hackage.haskell.org/package/type-equality-0.1.2/docs/Data-Type-Equality.html
protocol TypeEquality {
  typealias A
  typealias B
  func apply(a: A) -> B
}

struct Refl<X> : TypeEquality {
  typealias A = X
  typealias B = X
  func apply(a: A) -> B {
    return a
  }
}
{'fraction_non_alphanumeric': 0.12944983818770225, 'fraction_numerical': 0.02669902912621359, 'mean_word_length': 2.889937106918239, 'pattern_counts': {'":': 0, '<': 9, '<?xml version=': 0, '>': 13, 'https://': 1, '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': '7557211', 'n_tokens_mistral': 463, 'n_tokens_neox': 431, 'n_words': 131}