-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merge stable fp/meta
refactoring
#10
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
`MetaClass.method` then becomes a decorator to register a particular method's implementation (could allow for != names).
This commit adds the `Method` descriptor for type classes, which allows meta classes inheriting from `TypeClass` to register method signatures, to then check/decorate specific method implementations of their type instances. :%s/TypeMeta/TypeClass :%s/Meta/Class :%s/TypeVar/Variable :%s/TypeConstructor/Constructor
Temporarily remove Tensor from exports, make this a subpackage with backend interface.
Use Hom as bifunctor name for callables. Keep arrows for abstract compositions.
Functors (List, Wrap, ...) and type classes (Eq, Monoid, Ring, ...) are subclasses of Type, as should be. Differently constrained type constructors (Functor, Monad, ...) all subclass Kind. List(Int) :: List <= Monoid <= Type Type :: Kind List :: Functor <= Kind
The default Constructor._new_ method supports subclass declarations as in: class Tensor(WrapRing(torch.Tensor), metaclass=WrapRing): ...
Constructor instances seamlessly return type expressions when fed with type variables :%s/Variable/Var/g
update State docs and examples
This commit makes `NFunctor` useless. Both `Bifunctor` and `Cofunctor` could be forced to inherit from `Functor`. However two problems remain: - correct varargs signature for bifunctors - delete (co)fmap method when co(ntra)variant are exhausted
add Monoidal aka Applicative functors, superclass of Monad compute Functor kind from `tuple[Args, Args]` signature where Args = tuple[int] | ... This way the NFunctor class becomes useless. Keeps Cofunctor and Bifunctor to keep `cofmap` optional, although using Functor as base for contravariant functors as well could be done later, up to a slight API change.
Closed
Closed
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The overall metaclass logic and naming from
fp/meta
is cleaned up, becoming quite different from 0.1The Type category implementation has been moved to
fp/cartesian
, implementingHom
,Prod
andEither
.TODO:
Struct
instances to have settersTensor
andTens
implementations for the backend agnostic type.