{"action":"created","issue":{"url":"https://api.github.com/repos/Nemocas/AbstractAlgebra.jl/issues/339","repository_url":"https://api.github.com/repos/Nemocas/AbstractAlgebra.jl","labels_url":"https://api.github.com/repos/Nemocas/AbstractAlgebra.jl/issues/339/labels{/name}","comments_url":"https://api.github.com/repos/Nemocas/AbstractAlgebra.jl/issues/339/comments","events_url":"https://api.github.com/repos/Nemocas/AbstractAlgebra.jl/issues/339/events","html_url":"https://github.com/Nemocas/AbstractAlgebra.jl/issues/339","id":456979461,"node_id":"MDU6SXNzdWU0NTY5Nzk0NjE=","number":339,"title":"Linear Algebra: Method selection","user":{"login":"fieker","id":3662167,"node_id":"MDQ6VXNlcjM2NjIxNjc=","avatar_url":"https://avatars3.githubusercontent.com/u/3662167?v=4","gravatar_id":"","url":"https://api.github.com/users/fieker","html_url":"https://github.com/fieker","followers_url":"https://api.github.com/users/fieker/followers","following_url":"https://api.github.com/users/fieker/following{/other_user}","gists_url":"https://api.github.com/users/fieker/gists{/gist_id}","starred_url":"https://api.github.com/users/fieker/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fieker/subscriptions","organizations_url":"https://api.github.com/users/fieker/orgs","repos_url":"https://api.github.com/users/fieker/repos","events_url":"https://api.github.com/users/fieker/events{/privacy}","received_events_url":"https://api.github.com/users/fieker/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":36,"created_at":"2019-06-17T14:49:44Z","updated_at":"2019-06-18T17:00:10Z","closed_at":null,"author_association":"NONE","body":"as an example: determinant of a matrix.\r\nAvailable algorithms: (at least a subset)\r\n - for fields via rref or similar (n^3)\r\n - for rings fraction free evaluation (n^4)\r\n - for euclidean rings: HNF (n^3)\r\n - for univariate polynomials: interpolation/ evaluation\r\n - special implementations for fmpz_mat, fmpq_mat, ...\r\n\r\nGIven a matrix aver a ring, how should the \"correct\" method be selected? There is no type-match for euclidean rings - nor can there be:\r\nWe've just implemented localisations of (maximal) orders of number fields. In some cases, this is a euclidean ring\r\nSimilar: quadratic fields: in some cases (important for crypto), the ring of integers is effective euclidean (Z[i]) but cannot distinguished by type.\r\n\r\nWhat is a generic method for dealing with this?\r\n"},"comment":{"url":"https://api.github.com/repos/Nemocas/AbstractAlgebra.jl/issues/comments/503223189","html_url":"https://github.com/Nemocas/AbstractAlgebra.jl/issues/339#issuecomment-503223189","issue_url":"https://api.github.com/repos/Nemocas/AbstractAlgebra.jl/issues/339","id":503223189,"node_id":"MDEyOklzc3VlQ29tbWVudDUwMzIyMzE4OQ==","user":{"login":"kalmarek","id":1666118,"node_id":"MDQ6VXNlcjE2NjYxMTg=","avatar_url":"https://avatars1.githubusercontent.com/u/1666118?v=4","gravatar_id":"","url":"https://api.github.com/users/kalmarek","html_url":"https://github.com/kalmarek","followers_url":"https://api.github.com/users/kalmarek/followers","following_url":"https://api.github.com/users/kalmarek/following{/other_user}","gists_url":"https://api.github.com/users/kalmarek/gists{/gist_id}","starred_url":"https://api.github.com/users/kalmarek/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kalmarek/subscriptions","organizations_url":"https://api.github.com/users/kalmarek/orgs","repos_url":"https://api.github.com/users/kalmarek/repos","events_url":"https://api.github.com/users/kalmarek/events{/privacy}","received_events_url":"https://api.github.com/users/kalmarek/received_events","type":"User","site_admin":false},"created_at":"2019-06-18T17:00:10Z","updated_at":"2019-06-18T17:00:10Z","author_association":"NONE","body":"@wbhart the first one was me being lazy and not writing `::Type{<:}` everywhere ;)\r\n\r\n> It's also brittle in that if you want to insert a trait in the dispatched-to function's type signature, you need to add a new field, then modify a bunch of other code to get those right too. I'm not so keen on that. This will lead to errors that only show up at runtime, which I'm keen to avoid where possible.\r\n\r\nI didn't understand that. There are no fields (needed) in `Traits`, it could be an empty struct, the whole \"predicate\" information is in the type. Any changes to Traits will be opaque to the rest of the code, as long as `getindex` returns what it should. And overloading `getindex` will allow You to add some logic there (should we need it). And the ordering of traits (e.g. in tuple approach) is contained in the Traits \"class\".\r\n\r\nFinally it is very easy to test ;) both Traits indexing and `myfun` (without referring to Traits). Not to mention that it produces very clean signatures (without unused arguments and so on).\r\n\r\nanyway, i guess it's high time we produced list of functions that may use those traits, see how the corresponding methods should look like and see what we actually need.\r\n\r\nand it's time to go home:)\r\n\r\n\r\n"}}
{"actor":{"display_login":"kalmarek"}}