Skip to content

Conversation

@blackheaven
Copy link
Contributor

@blackheaven blackheaven commented Jan 9, 2026

Checklist

  • Add a new entry in an appropriate subdirectory of changelog.d
  • Read and follow the PR guidelines

@zebot zebot added the ok-to-test Approved for running tests in CI, overrides not-ok-to-test if both labels exist label Jan 9, 2026
@blackheaven blackheaven marked this pull request as ready for review January 13, 2026 18:02
@blackheaven blackheaven requested a review from a team as a code owner January 13, 2026 18:02
Copy link
Contributor

@battermann battermann left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

please add a changelog

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

does this have to stay in galley? why?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It depends on things only definable in galley, such as Opts.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That alone is solvable by extracting a dedicated config for the subsystem. Are there still other reasons?

Copy link
Contributor Author

@blackheaven blackheaven Jan 15, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It seems so, but it is the wrong tradeoff.

Pros:

  • interpreters and effects are co-located (for one usage)

Cons:

  • high coupling of galley with all packages depending on wire-subsystems
  • low cohesion, as all changes will impact all the dependant packages

Having separated effects definitions/interpreters, enforcing high cohesion and low coupling, is the purpose of effects systems.

global <- inputs (view $ settings . checkGroupInfo)
guard (global == Just True)
mls <- getFeatureForTeam @MLSConfig tid
mls <- getFeatureForTeam @_ @MLSConfig tid
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we change the order of the type parameters so that we do not have to pass a placeholder type?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure, it's polysemy defined

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just tried with foralls at effect level, it does not work

SConversationMemberUpdateTag -> do
void $ ensureOtherMember lconv (cmuTarget action) conv
E.setOtherMember lcnv (cmuTarget action) (cmuUpdate action)
let action' = action :: ConversationMemberUpdate
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is this suddenly necessary?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When making the change, GHC was unable to properly infer it, I do not know why (I welcome any idea), this is the workaround I have found.

@blackheaven blackheaven requested review from a team as code owners January 14, 2026 15:01
@blackheaven
Copy link
Contributor Author

@akshaymankar @battermann I have moved the interpreters in wire-subsystems, can you have a look please?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ok-to-test Approved for running tests in CI, overrides not-ok-to-test if both labels exist

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants