Recursive relationships
- NgΓ΄n ngα»― chΓnh
- Haskell
- Star
- 952
- Fork
- 50
- Chα» sα» merge pull request
- KhΓ΄ng cΓ³ pull request nΓ o Δược merge trong 30 ngΓ y
MΓ΄ tαΊ£
Hi there π
I'm trying to work with recursive relationships.
```
TutorialD (master/main): rec := relation{tuple{src 0, tgt 1}, tuple{src 1, tgt 2}, tuple{src 2, tgt 3}}
TutorialD (master/main): :showexpr rec
ββββββββββββββ¬βββββββββββββ
βsrc::Integerβtgt::Integerβ
ββββββββββββββΌβββββββββββββ€
β0 β1 β
β1 β2 β
β2 β3 β
ββββββββββββββ΄βββββββββββββ
```
It seems to work ok for a depth 1 traversal:
```
TutorialD (master/main): :showexpr ((rec where src=0) join (rec rename {tgt as tgt2, src as tgt}))
ββββββββββββββ¬βββββββββββββ¬ββββββββββββββ
βsrc::Integerβtgt::Integerβtgt2::Integerβ
ββββββββββββββΌβββββββββββββΌββββββββββββββ€
β0 β1 β2 β
ββββββββββββββ΄βββββββββββββ΄ββββββββββββββ
```
Also if I add an edge:
```
TutorialD (master/main): insert rec relation{tuple{src 1, tgt 4}}
TutorialD (master/main): :showexpr rec
ββββββββββββββ¬βββββββββββββ
βsrc::Integerβtgt::Integerβ
ββββββββββββββΌβββββββββββββ€
β1 β4 β
β2 β3 β
β1 β2 β
β0 β1 β
ββββββββββββββ΄βββββββββββββ
TutorialD (master/main): :showexpr ((rec where src=0) join (rec rename {tgt as tgt2, src as tgt}))
ββββββββββββββ¬βββββββββββββ¬ββββββββββββββ
βsrc::Integerβtgt::Integerβtgt2::Integerβ
ββββββββββββββΌβββββββββββββΌββββββββββββββ€
β0 β1 β2 β
β0 β1 β4 β
ββββββββββββββ΄βββββββββββββ΄ββββββββββββββ
```
I can work out a way to do a depth 2 traversal:
```
TutorialD (master/main): :showexpr ((rec where src=0) join (rec rename {tgt as tgt2, src as tgt}) join (rec rename {tgt as tgt3, src as tgt2}))
ββββββββββββββ¬βββββββββββββ¬ββββββββββββββ¬ββββββββββββββ
βsrc::Integerβtgt::Integerβtgt2::Integerβtgt3::Integerβ
ββββββββββββββΌβββββββββββββΌββββββββββββββΌββββββββββββββ€
β0 β1 β2 β3 β
ββββββββββββββ΄βββββββββββββ΄ββββββββββββββ΄ββββββββββββββ
```
Can this be generalised to a depth `n` traversal? Also would it be possible to group the result by depth?
Thanks for your time!
Jun
HΖ°α»ng dαΊ«n ΔΓ³ng gΓ³p
ChΖ°a lαΊp chα» mα»₯c Δược hΖ°α»ng dαΊ«n ΔΓ³ng gΓ³p cho kho mΓ£ nguα»n nΓ y
ΔΓ‘nh giΓ‘
Issue nΓ y chΖ°a Δược ΔΓ‘nh giΓ‘.