Logs: liberachat/#haskell
| 2025-11-03 10:38:51 | → | deptype joins (~deptype@2406:b400:3a:73c2:4b0e:36fd:bf73:2ff7) |
| 2025-11-03 10:40:13 | × | trickard quits (~trickard@cpe-63-98-47-163.wireline.com.au) (Ping timeout: 264 seconds) |
| 2025-11-03 10:40:21 | → | trickard_ joins (~trickard@cpe-63-98-47-163.wireline.com.au) |
| 2025-11-03 10:40:47 | × | Digit quits (~user@user/digit) (Read error: Connection reset by peer) |
| 2025-11-03 10:58:39 | × | deptype quits (~deptype@2406:b400:3a:73c2:4b0e:36fd:bf73:2ff7) (Remote host closed the connection) |
| 2025-11-03 10:58:56 | → | deptype joins (~deptype@2406:b400:3a:73c2:6922:e99c:537:1929) |
| 2025-11-03 11:07:58 | → | Square2 joins (~Square@user/square) |
| 2025-11-03 11:11:39 | → | Inline joins (~inlinE@2a02:8071:57a1:dc0:a54f:a27d:cf25:667b) |
| 2025-11-03 11:21:54 | → | acidjnk joins (~acidjnk@p200300d6e7171976342d0abd7c7df47c.dip0.t-ipconnect.de) |
| 2025-11-03 11:28:17 | → | chele joins (~chele@user/chele) |
| 2025-11-03 11:29:14 | × | karenw quits (~karenw@user/karenw) (Quit: Deep into that darkness peering...) |
| 2025-11-03 11:29:40 | → | trickard___ joins (~trickard@cpe-52-98-47-163.wireline.com.au) |
| 2025-11-03 11:30:12 | trickard___ | is now known as trickard |
| 2025-11-03 11:30:46 | × | trickard_ quits (~trickard@cpe-63-98-47-163.wireline.com.au) (Ping timeout: 256 seconds) |
| 2025-11-03 11:39:27 | × | prdak quits (~Thunderbi@user/prdak) (Read error: Connection reset by peer) |
| 2025-11-03 11:42:03 | → | CiaoSen joins (~Jura@2a02:8071:64e1:da0:5a47:caff:fe78:33db) |
| 2025-11-03 11:44:30 | → | Digit joins (~user@user/digit) |
| 2025-11-03 11:45:36 | × | chromoblob quits (~chromoblo@user/chromob1ot1c) (Ping timeout: 244 seconds) |
| 2025-11-03 11:46:35 | → | chromoblob joins (~chromoblo@user/chromob1ot1c) |
| 2025-11-03 11:51:39 | × | chromoblob quits (~chromoblo@user/chromob1ot1c) (Read error: Connection reset by peer) |
| 2025-11-03 11:51:59 | → | chromoblob joins (~chromoblo@user/chromob1ot1c) |
| 2025-11-03 11:58:25 | × | chromoblob quits (~chromoblo@user/chromob1ot1c) (Ping timeout: 244 seconds) |
| 2025-11-03 11:58:40 | → | chromoblob joins (~chromoblo@user/chromob1ot1c) |
| 2025-11-03 12:05:11 | × | chromoblob quits (~chromoblo@user/chromob1ot1c) (Ping timeout: 250 seconds) |
| 2025-11-03 12:06:11 | → | chromoblob joins (~chromoblo@user/chromob1ot1c) |
| 2025-11-03 12:06:21 | → | Square3 joins (~Square4@user/square) |
| 2025-11-03 12:09:23 | → | craunts795335385 joins (~craunts@136.158.7.194) |
| 2025-11-03 12:09:48 | × | Square2 quits (~Square@user/square) (Ping timeout: 252 seconds) |
| 2025-11-03 12:14:32 | × | Frostillicus quits (~Frostilli@pool-71-174-119-69.bstnma.fios.verizon.net) (Ping timeout: 244 seconds) |
| 2025-11-03 12:15:24 | → | Frostillicus joins (~Frostilli@pool-71-174-119-69.bstnma.fios.verizon.net) |
| 2025-11-03 12:19:39 | × | chromoblob quits (~chromoblo@user/chromob1ot1c) (Read error: Connection reset by peer) |
| 2025-11-03 12:19:58 | → | chromoblob joins (~chromoblo@user/chromob1ot1c) |
| 2025-11-03 12:20:29 | × | Square3 quits (~Square4@user/square) (Remote host closed the connection) |
| 2025-11-03 12:25:12 | × | deptype quits (~deptype@2406:b400:3a:73c2:6922:e99c:537:1929) (Remote host closed the connection) |
| 2025-11-03 12:25:47 | → | deptype joins (~deptype@2406:b400:3a:73c2:adf2:5878:8562:a7a) |
| 2025-11-03 12:32:55 | × | Inline quits (~inlinE@2a02:8071:57a1:dc0:a54f:a27d:cf25:667b) (Remote host closed the connection) |
| 2025-11-03 12:33:13 | → | Inline joins (~inlinE@2a02:8071:57a1:dc0:a54f:a27d:cf25:667b) |
| 2025-11-03 12:37:51 | Googulator92 | is now known as Googulator |
| 2025-11-03 12:38:25 | → | prdak joins (~Thunderbi@user/prdak) |
| 2025-11-03 12:42:42 | × | ouilemur quits (~jgmerritt@user/ouilemur) (Quit: WeeChat 4.7.1) |
| 2025-11-03 12:58:16 | → | ouilemur joins (~jgmerritt@user/ouilemur) |
| 2025-11-03 13:01:06 | → | ttybitnik joins (~ttybitnik@user/wolper) |
| 2025-11-03 13:02:41 | <[exa]> | Is there some canonical data type in the libraries that would represent a "directory structure"? Like a Tree but with explicit filename key, and data only in leaves ("files") |
| 2025-11-03 13:13:46 | <Leary> | [exa]: Sounds like a trie, specifically a "trie map" rather than a "trie set". |
| 2025-11-03 13:15:29 | <[exa]> | yeah sounds like it |
| 2025-11-03 13:16:04 | <[exa]> | funnily there's no package with general tries, somehow people only do stringy ones |
| 2025-11-03 13:16:32 | <[exa]> | (time to act?!) |
| 2025-11-03 13:19:17 | <Leary> | 'generic-trie' looks alright. |
| 2025-11-03 13:23:08 | [exa] | tries to refocus eyes |
| 2025-11-03 13:23:12 | <[exa]> | somehow I missed that |
| 2025-11-03 13:23:14 | <[exa]> | thanks a lot! |
| 2025-11-03 13:23:48 | <dminuoso> | A directory structure is, under most filesystems, not just a dree but a DAG. |
| 2025-11-03 13:23:50 | → | user363627 joins (~user@user/user363627) |
| 2025-11-03 13:24:06 | <dminuoso> | Sorry, not even acylic. |
| 2025-11-03 13:24:09 | <dminuoso> | A graph. |
| 2025-11-03 13:24:30 | <tomsmeding> | a dree? |
| 2025-11-03 13:24:38 | × | prdak quits (~Thunderbi@user/prdak) (Read error: Connection reset by peer) |
| 2025-11-03 13:24:42 | <dminuoso> | nice |
| 2025-11-03 13:25:14 | × | deptype quits (~deptype@2406:b400:3a:73c2:adf2:5878:8562:a7a) (Remote host closed the connection) |
| 2025-11-03 13:25:28 | → | deptype joins (~deptype@2406:b400:3a:73c2:f533:eee9:1812:5e31) |
| 2025-11-03 13:25:43 | AlexNoo_ | is now known as AlexNoo |
| 2025-11-03 13:26:25 | × | notzmv quits (~umar@user/notzmv) (Ping timeout: 264 seconds) |
| 2025-11-03 13:27:57 | × | weary-traveler quits (~user@user/user363627) (Ping timeout: 250 seconds) |
| 2025-11-03 13:27:59 | <[exa]> | dminuoso: I meant a really naive trivial one :D |
| 2025-11-03 13:28:38 | <[exa]> | Leary: is it just me or that generic-trie is too generic? there isn't anything like "listing a directory" or so |
| 2025-11-03 13:29:41 | → | prdak joins (~Thunderbi@user/prdak) |
| 2025-11-03 13:34:59 | → | prdak1 joins (~Thunderbi@user/prdak) |
| 2025-11-03 13:36:37 | × | prdak quits (~Thunderbi@user/prdak) (Ping timeout: 264 seconds) |
| 2025-11-03 13:36:37 | prdak1 | is now known as prdak |
| 2025-11-03 13:37:20 | <tomsmeding> | isn't the idea of a trie that a node encodes its entire prefix, and the particular substring on an edge has no useful semantics by itself? |
| 2025-11-03 13:37:39 | <tomsmeding> | so I wouldn't expect a trie library to expose a function for getting the outgoing edges of a node, because that ought not to be relevant for a trie |
| 2025-11-03 13:38:16 | <tomsmeding> | [exa]: why not just data FileTree = Directory (Map FileName FileTree) | File FileName Stuffs |
| 2025-11-03 13:38:57 | <dminuoso> | tomsmeding: No the opposite. |
| 2025-11-03 13:39:10 | <dminuoso> | You essentially only encode portions in edges. |
| 2025-11-03 13:39:15 | <tomsmeding> | I know |
| 2025-11-03 13:39:19 | <tomsmeding> | I know how a trie works |
| 2025-11-03 13:39:33 | <Leary> | [exa]: Actually, upon further inspection, it looks like it's focused more on being an optimised `Map` than on otherwise exploiting its trie-ness. 'trie-simple' looks more suitable, with e.g.: `match :: Ord c => [c] -> TMap c a -> (Maybe a, TMap c a)` |
| 2025-11-03 13:39:37 | × | trickard quits (~trickard@cpe-52-98-47-163.wireline.com.au) (Ping timeout: 246 seconds) |
| 2025-11-03 13:40:03 | <tomsmeding> | dminuoso: but the portions on the edges are not meaningful values by themselves, they just happen to be substrings that are shared by all values in a particular subset of your set |
| 2025-11-03 13:40:31 | <dminuoso> | I've always rolled my own trie implementations to cope with the specific needs. |
| 2025-11-03 13:40:33 | <Leary> | They're meaningful if you control the atoms. |
| 2025-11-03 13:41:00 | <dminuoso> | For our DNS stuff I have a SparseTrie that can have sort if "missing" intermediate nodes. |
| 2025-11-03 13:41:07 | <dminuoso> | s/sort if/sort of" |
| 2025-11-03 13:42:17 | → | trickard_ joins (~trickard@cpe-52-98-47-163.wireline.com.au) |
| 2025-11-03 13:44:00 | × | prdak quits (~Thunderbi@user/prdak) (Read error: Connection reset by peer) |
| 2025-11-03 13:45:16 | × | deptype quits (~deptype@2406:b400:3a:73c2:f533:eee9:1812:5e31) (Remote host closed the connection) |
| 2025-11-03 13:45:50 | → | deptype joins (~deptype@2406:b400:3a:73c2:c5bd:c4ff:b106:a7ad) |
| 2025-11-03 13:46:10 | <[exa]> | tomsmeding: yeah I wanted to avoid reimplementation |
| 2025-11-03 13:46:15 | <[exa]> | Leary: oh nice |
| 2025-11-03 13:46:42 | <[exa]> | Leary: how do you find the packages? hoogle is hiding this from me completely |
| 2025-11-03 13:46:45 | <[exa]> | ._. |
| 2025-11-03 13:46:47 | → | prdak joins (~Thunderbi@user/prdak) |
| 2025-11-03 13:46:53 | <tomsmeding> | search for "trie" on hackage? |
| 2025-11-03 13:47:18 | <tomsmeding> | hoogle searches only in the stackage set in any case |
| 2025-11-03 13:47:19 | → | prdak1 joins (~Thunderbi@user/prdak) |
| 2025-11-03 13:47:27 | <dminuoso> | I looked for trie packages on hackage, there is not much generic stuff up there. |
| 2025-11-03 13:48:33 | <dminuoso> | Im not sure a generic version is even that useful. You tend to pick a trie for performance reasons, and then you want it tailored to your algorithm. |
| 2025-11-03 13:49:16 | <dminuoso> | And it must facilitate particular access patterns. Maybe you care about inserting a lot |
| 2025-11-03 13:49:24 | <Leary> | [exa]: Just hackage search, like they said. |
| 2025-11-03 13:51:10 | × | prdak1 quits (~Thunderbi@user/prdak) (Read error: Connection reset by peer) |
All times are in UTC.