<commit_before>part of dartz;

class DualSemigroup<A> extends Semigroup<A> {
  final Semigroup<A> _aSemigroup;

  DualSemigroup(this._aSemigroup);

  @override A append(A a1, A a2) => _aSemigroup.append(a2, a1);
}

Semigroup dualSemigroup(Semigroup si) => new DualSemigroup(si);

class DualMonoid<A> extends Monoid<A> {
  final Monoid<A> _aMonoid;<commit_msg>Type parameters for dualSemigroup<commit_after>part of dartz;

class DualSemigroup<A> extends Semigroup<A> {
  final Semigroup<A> _aSemigroup;

  DualSemigroup(this._aSemigroup);

  @override A append(A a1, A a2) => _aSemigroup.append(a2, a1);
}

Semigroup/*<A>*/ dualSemigroup/*<A>*/(Semigroup/*<A>*/ si) => new DualSemigroup(si);

class DualMonoid<A> extends Monoid<A> {
  final Monoid<A> _aMonoid;
{'fraction_non_alphanumeric': 0.1370223978919631, 'fraction_numerical': 0.010540184453227932, 'mean_word_length': 5.909090909090909, 'pattern_counts': {'":': 0, '<': 18, '<?xml version=': 0, '>': 22, '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': '2710205', 'n_tokens_mistral': 326, 'n_tokens_neox': 289, 'n_words': 64}