2016-08-10T00:03:48Z Josh2 quit (Remote host closed the connection) 2016-08-10T00:06:21Z kobain joined #lisp 2016-08-10T00:09:53Z bitch is now known as ^5 2016-08-10T00:12:57Z mastokley quit (Ping timeout: 250 seconds) 2016-08-10T00:13:01Z ASau quit (Read error: No route to host) 2016-08-10T00:13:22Z davsebamse joined #lisp 2016-08-10T00:14:38Z ASau joined #lisp 2016-08-10T00:19:03Z pierpa joined #lisp 2016-08-10T00:21:31Z adolf_stalin joined #lisp 2016-08-10T00:21:42Z adolf_stalin quit (Remote host closed the connection) 2016-08-10T00:21:57Z prole quit (Remote host closed the connection) 2016-08-10T00:22:18Z adolf_stalin joined #lisp 2016-08-10T00:27:24Z adolf_stalin quit (Ping timeout: 276 seconds) 2016-08-10T00:29:51Z lexicall joined #lisp 2016-08-10T00:34:14Z lexicall quit (Ping timeout: 260 seconds) 2016-08-10T00:37:12Z BlueRavenGT quit (Ping timeout: 258 seconds) 2016-08-10T00:37:26Z oleo quit (Read error: Connection reset by peer) 2016-08-10T00:37:57Z oleo joined #lisp 2016-08-10T00:39:16Z ^5 is now known as bitch 2016-08-10T00:42:04Z wtetzner quit (Remote host closed the connection) 2016-08-10T00:42:31Z wtetzner joined #lisp 2016-08-10T00:46:25Z SumoSudo quit (Ping timeout: 252 seconds) 2016-08-10T00:47:11Z wtetzner quit (Ping timeout: 251 seconds) 2016-08-10T00:48:42Z wildlander quit (Quit: Saliendo) 2016-08-10T00:52:05Z eSVG joined #lisp 2016-08-10T00:52:23Z wccoder quit (Remote host closed the connection) 2016-08-10T00:52:33Z eSVG quit (Max SendQ exceeded) 2016-08-10T00:52:41Z m00natic quit (Remote host closed the connection) 2016-08-10T00:53:05Z eSVG joined #lisp 2016-08-10T00:54:33Z nzambe quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client) 2016-08-10T00:55:47Z nzambe joined #lisp 2016-08-10T00:56:53Z papachan joined #lisp 2016-08-10T00:57:00Z shdeng joined #lisp 2016-08-10T00:58:03Z davsebamse quit (Ping timeout: 265 seconds) 2016-08-10T01:08:24Z ASau quit (Remote host closed the connection) 2016-08-10T01:10:20Z yeticry quit (Ping timeout: 244 seconds) 2016-08-10T01:10:54Z yeticry joined #lisp 2016-08-10T01:13:33Z papachan quit (Ping timeout: 240 seconds) 2016-08-10T01:14:12Z davsebamse joined #lisp 2016-08-10T01:16:02Z wtetzner joined #lisp 2016-08-10T01:20:32Z davsebamse quit (Ping timeout: 240 seconds) 2016-08-10T01:26:46Z ASau joined #lisp 2016-08-10T01:27:08Z adolf_stalin joined #lisp 2016-08-10T01:30:08Z davsebamse joined #lisp 2016-08-10T01:34:39Z davsebamse quit (Ping timeout: 258 seconds) 2016-08-10T01:35:04Z [mark] joined #lisp 2016-08-10T01:36:26Z davsebamse joined #lisp 2016-08-10T01:39:10Z [mark] quit (Quit: ChatZilla 0.9.92 [Firefox 48.0/20160726073904]) 2016-08-10T01:40:03Z Atarian quit (Ping timeout: 250 seconds) 2016-08-10T01:43:02Z defaultxr joined #lisp 2016-08-10T01:43:52Z Atarian joined #lisp 2016-08-10T01:47:21Z arescorpio joined #lisp 2016-08-10T01:48:39Z kushal joined #lisp 2016-08-10T01:49:25Z ringer1 joined #lisp 2016-08-10T01:52:55Z wccoder joined #lisp 2016-08-10T01:57:31Z wccoder quit (Ping timeout: 244 seconds) 2016-08-10T01:58:13Z adolf_stalin quit (Remote host closed the connection) 2016-08-10T02:01:09Z ASau quit (Remote host closed the connection) 2016-08-10T02:02:45Z pillton quit (Quit: ERC (IRC client for Emacs 24.5.1)) 2016-08-10T02:09:20Z yeticry_ quit (Ping timeout: 250 seconds) 2016-08-10T02:10:36Z yeticry_ joined #lisp 2016-08-10T02:13:00Z sweater quit (Read error: Connection reset by peer) 2016-08-10T02:15:35Z quasus quit (Ping timeout: 244 seconds) 2016-08-10T02:17:09Z jokleinn joined #lisp 2016-08-10T02:19:44Z killmaster quit (Ping timeout: 244 seconds) 2016-08-10T02:22:34Z killmaster joined #lisp 2016-08-10T02:22:47Z adolf_stalin joined #lisp 2016-08-10T02:27:12Z harish joined #lisp 2016-08-10T02:34:25Z pierpa: there's no complexity guarantee in the standard, BUT how confident can I be that HASH-TABLE-COUNT is O(1) in practice? what do implementations do? is it O(1) even for weak tables? 2016-08-10T02:34:55Z wtetzner quit (Remote host closed the connection) 2016-08-10T02:35:48Z Bike: on sbcl it's a struct read 2016-08-10T02:36:48Z pierpa: ok. Even for weak hashes? 2016-08-10T02:36:59Z Bike: regardless, yes 2016-08-10T02:37:11Z Bike: looks pretty simple on ccl as well 2016-08-10T02:37:15Z pierpa: k. Thank you. 2016-08-10T02:38:08Z tmtwd joined #lisp 2016-08-10T02:38:24Z asc232 joined #lisp 2016-08-10T02:40:13Z pierpa: FWIW, the question arose because I was wondering if the second of these functions could be more safely assumed to be fast than the first one. https://bpaste.net/show/a969ee18d9a3 2016-08-10T02:40:47Z pierpa: (in a random implementation) 2016-08-10T02:58:06Z eschatologist quit (Quit: ZNC 1.6.3+deb1 - http://znc.in) 2016-08-10T03:05:19Z unbalancedparen quit (Ping timeout: 260 seconds) 2016-08-10T03:12:22Z loke: pierpa: The spec does not place any restrictions or guarantees on either of those functions. 2016-08-10T03:13:19Z Bike: that's what they led with 2016-08-10T03:15:44Z jleija quit (Quit: leaving) 2016-08-10T03:17:39Z eschatologist joined #lisp 2016-08-10T03:19:16Z shka_ joined #lisp 2016-08-10T03:21:16Z lmohseni joined #lisp 2016-08-10T03:22:00Z lmohseni left #lisp 2016-08-10T03:26:54Z Beetny joined #lisp 2016-08-10T03:27:03Z adolf_stalin quit (Quit: Leaving...) 2016-08-10T03:27:54Z pierpa: yes, but the WITH-HASH-TABLE-ITERATOR version would be unreasonable if it was not O(1). The HASH-TABLE-COUNT would not be completely crazy if in some circumstances it would not be O(1) 2016-08-10T03:28:41Z pierpa: for example, in Racket (the equivalent of) HASH-TABLE-COUNT is O(1) only for non-weak tables. 2016-08-10T03:29:53Z pierpa: so, in Racket the (equivalent of) second function would be preferable. 2016-08-10T03:33:00Z BlueRavenGT joined #lisp 2016-08-10T03:37:45Z loke: pierpa: I could imagine the case where the second version is also not O(1), although I agree with you that it's less likely. 2016-08-10T03:38:24Z impulse joined #lisp 2016-08-10T03:41:31Z wccoder joined #lisp 2016-08-10T03:46:39Z jokleinn quit (Quit: WeeChat 1.5) 2016-08-10T03:46:46Z arescorpio quit (Quit: Leaving.) 2016-08-10T04:00:22Z mastokley joined #lisp 2016-08-10T04:09:51Z TheodoreBe joined #lisp 2016-08-10T04:10:05Z TheodoreBe quit (Client Quit) 2016-08-10T04:11:15Z TheodoreBe joined #lisp 2016-08-10T04:13:32Z TheodoreBe quit (Client Quit) 2016-08-10T04:14:26Z Harag quit (Ping timeout: 244 seconds) 2016-08-10T04:30:33Z eli joined #lisp 2016-08-10T04:30:33Z eli quit (Changing host) 2016-08-10T04:30:33Z eli joined #lisp 2016-08-10T04:35:21Z FreeBirdLjj joined #lisp 2016-08-10T04:42:26Z atheris quit (Remote host closed the connection) 2016-08-10T04:44:32Z tmtwd quit (Ping timeout: 240 seconds) 2016-08-10T04:54:26Z coetry joined #lisp 2016-08-10T04:55:06Z tmtwd joined #lisp 2016-08-10T04:57:35Z FreeBird_ joined #lisp 2016-08-10T04:57:50Z oleo quit (Quit: Leaving) 2016-08-10T04:59:04Z FreeBirdLjj quit (Ping timeout: 260 seconds) 2016-08-10T05:01:40Z Harag joined #lisp 2016-08-10T05:03:33Z Velveeta_Chef quit (Ping timeout: 240 seconds) 2016-08-10T05:04:19Z BlueRavenGT quit (Ping timeout: 260 seconds) 2016-08-10T05:04:28Z mathi_aihtam joined #lisp 2016-08-10T05:07:18Z Kaisyu joined #lisp 2016-08-10T05:15:28Z Warlock[29A] joined #lisp 2016-08-10T05:16:44Z vlatkoB joined #lisp 2016-08-10T05:17:15Z lexicall joined #lisp 2016-08-10T05:20:06Z pyon quit (Ping timeout: 258 seconds) 2016-08-10T05:20:49Z eSVG quit (Ping timeout: 258 seconds) 2016-08-10T05:21:37Z minion quit (Remote host closed the connection) 2016-08-10T05:21:43Z minion joined #lisp 2016-08-10T05:22:14Z eSVG joined #lisp 2016-08-10T05:23:30Z Velveeta_Chef joined #lisp 2016-08-10T05:41:48Z quasus joined #lisp 2016-08-10T05:41:48Z dilated_dinosaur quit (Ping timeout: 252 seconds) 2016-08-10T05:44:36Z Harag quit (Quit: Harag) 2016-08-10T05:45:06Z Harag joined #lisp 2016-08-10T05:46:10Z Harag quit (Client Quit) 2016-08-10T05:47:59Z Harag joined #lisp 2016-08-10T05:48:31Z flamebeard joined #lisp 2016-08-10T05:51:13Z Harag1 joined #lisp 2016-08-10T05:52:05Z Harag quit (Ping timeout: 244 seconds) 2016-08-10T05:52:06Z Harag1 is now known as Harag 2016-08-10T05:53:01Z wccoder quit (Remote host closed the connection) 2016-08-10T05:54:05Z Harag quit (Client Quit) 2016-08-10T05:54:39Z Harag joined #lisp 2016-08-10T05:55:09Z dilated_dinosaur joined #lisp 2016-08-10T05:58:07Z eivarv joined #lisp 2016-08-10T06:00:08Z coetry quit (Ping timeout: 265 seconds) 2016-08-10T06:00:18Z deank quit (Quit: quit) 2016-08-10T06:03:52Z ramky joined #lisp 2016-08-10T06:06:09Z quasus quit (Ping timeout: 260 seconds) 2016-08-10T06:06:17Z stardiviner joined #lisp 2016-08-10T06:08:39Z shka_ quit (Ping timeout: 276 seconds) 2016-08-10T06:09:19Z eivarv quit (Quit: Sleep) 2016-08-10T06:10:07Z Harag quit (Quit: Harag) 2016-08-10T06:10:33Z Harag joined #lisp 2016-08-10T06:12:31Z Harag quit (Client Quit) 2016-08-10T06:13:36Z madmalik joined #lisp 2016-08-10T06:13:42Z Harag joined #lisp 2016-08-10T06:18:19Z dilated_dinosaur quit (Ping timeout: 258 seconds) 2016-08-10T06:19:59Z troydm joined #lisp 2016-08-10T06:23:53Z Mon_Ouie quit (Ping timeout: 250 seconds) 2016-08-10T06:25:40Z pierpa quit (Ping timeout: 244 seconds) 2016-08-10T06:28:17Z Mon_Ouie joined #lisp 2016-08-10T06:28:51Z kobain quit (Quit: KVIrc 4.2.0 Equilibrium http://www.kvirc.net/) 2016-08-10T06:30:56Z dilated_dinosaur joined #lisp 2016-08-10T06:32:57Z bocaneri joined #lisp 2016-08-10T06:33:55Z tmtwd quit (Ping timeout: 244 seconds) 2016-08-10T06:35:38Z eivarv joined #lisp 2016-08-10T06:38:05Z mathi_aihtam quit (Quit: mathi_aihtam) 2016-08-10T06:40:28Z varjag joined #lisp 2016-08-10T06:43:03Z asc232 quit (Remote host closed the connection) 2016-08-10T06:46:50Z lexicall quit (Quit: Ah, my macbook is gonna sleep!) 2016-08-10T06:47:18Z eivarv quit (Quit: Sleep) 2016-08-10T06:52:15Z FreeBird_ quit (Ping timeout: 265 seconds) 2016-08-10T06:53:36Z wccoder joined #lisp 2016-08-10T06:56:04Z FreeBirdLjj joined #lisp 2016-08-10T06:57:25Z eivarv joined #lisp 2016-08-10T06:58:14Z wccoder quit (Ping timeout: 258 seconds) 2016-08-10T07:00:01Z vydd quit (Remote host closed the connection) 2016-08-10T07:00:39Z dmiles quit (Ping timeout: 276 seconds) 2016-08-10T07:02:45Z dmiles joined #lisp 2016-08-10T07:04:25Z norfumpit quit (Ping timeout: 244 seconds) 2016-08-10T07:07:17Z mathi_aihtam joined #lisp 2016-08-10T07:07:30Z eivarv quit (Quit: Sleep) 2016-08-10T07:12:09Z Munksgaard joined #lisp 2016-08-10T07:16:12Z mastokley quit (Ping timeout: 240 seconds) 2016-08-10T07:19:32Z nightfly quit (Ping timeout: 240 seconds) 2016-08-10T07:19:37Z fouric quit (Ping timeout: 250 seconds) 2016-08-10T07:19:40Z joshe quit (Ping timeout: 264 seconds) 2016-08-10T07:19:55Z joshe joined #lisp 2016-08-10T07:20:12Z vydd joined #lisp 2016-08-10T07:20:20Z fouric joined #lisp 2016-08-10T07:20:35Z vydd quit (Read error: Connection reset by peer) 2016-08-10T07:21:01Z vydd joined #lisp 2016-08-10T07:22:46Z nightfly joined #lisp 2016-08-10T07:27:32Z p_l|back1p quit (Remote host closed the connection) 2016-08-10T07:32:10Z defaultxr quit (Ping timeout: 250 seconds) 2016-08-10T07:35:33Z kushal quit (Quit: Leaving) 2016-08-10T07:36:20Z arpunk quit (Quit: WeeChat 1.4) 2016-08-10T07:36:58Z strelox joined #lisp 2016-08-10T07:38:50Z angavrilov joined #lisp 2016-08-10T07:39:52Z norfumpit joined #lisp 2016-08-10T07:41:08Z nzambe quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client) 2016-08-10T07:48:53Z yeticry quit (Read error: Connection reset by peer) 2016-08-10T07:48:53Z yeticry_ quit (Read error: Connection reset by peer) 2016-08-10T07:50:13Z fourier joined #lisp 2016-08-10T07:54:25Z yeticry joined #lisp 2016-08-10T07:54:59Z yeticry_ joined #lisp 2016-08-10T07:56:49Z quazimod1 quit (Quit: leaving) 2016-08-10T07:59:02Z gingerale joined #lisp 2016-08-10T08:00:57Z bitch quit (Ping timeout: 250 seconds) 2016-08-10T08:01:06Z sulky quit (Ping timeout: 276 seconds) 2016-08-10T08:01:49Z sulky joined #lisp 2016-08-10T08:02:33Z aries_liuxueyang quit (Ping timeout: 240 seconds) 2016-08-10T08:03:44Z quazimodo quit (Ping timeout: 258 seconds) 2016-08-10T08:03:50Z aries_liuxueyang joined #lisp 2016-08-10T08:04:02Z quazimodo joined #lisp 2016-08-10T08:04:03Z shdeng quit (Ping timeout: 264 seconds) 2016-08-10T08:04:13Z boomer joined #lisp 2016-08-10T08:06:17Z shdeng joined #lisp 2016-08-10T08:06:42Z stepnem joined #lisp 2016-08-10T08:07:40Z dmiles quit (Ping timeout: 264 seconds) 2016-08-10T08:07:44Z despoil quit (Quit: My Mac has gone to sleep. ZZZzzz…) 2016-08-10T08:10:11Z kolko quit (Read error: Connection reset by peer) 2016-08-10T08:11:30Z quazimodo quit (Ping timeout: 276 seconds) 2016-08-10T08:11:30Z steelbird quit (Ping timeout: 276 seconds) 2016-08-10T08:12:20Z kolko joined #lisp 2016-08-10T08:12:46Z steelbird joined #lisp 2016-08-10T08:14:20Z harish quit (Read error: Connection reset by peer) 2016-08-10T08:14:28Z harish_ joined #lisp 2016-08-10T08:15:46Z eivarv joined #lisp 2016-08-10T08:17:24Z yeticry_ quit (Ping timeout: 260 seconds) 2016-08-10T08:18:01Z yeticry_ joined #lisp 2016-08-10T08:20:07Z eSVG quit (Read error: Connection reset by peer) 2016-08-10T08:22:23Z despoil joined #lisp 2016-08-10T08:23:48Z dmiles joined #lisp 2016-08-10T08:24:15Z araujo_ joined #lisp 2016-08-10T08:25:36Z despoil quit (Client Quit) 2016-08-10T08:25:47Z araujo_ quit (Max SendQ exceeded) 2016-08-10T08:26:12Z impaktor quit (Read error: Connection reset by peer) 2016-08-10T08:26:20Z impaktor joined #lisp 2016-08-10T08:27:29Z araujo_ joined #lisp 2016-08-10T08:27:45Z araujo quit (Ping timeout: 276 seconds) 2016-08-10T08:28:57Z araujo_ quit (Max SendQ exceeded) 2016-08-10T08:29:53Z araujo_ joined #lisp 2016-08-10T08:36:08Z przl joined #lisp 2016-08-10T08:39:07Z mishoo joined #lisp 2016-08-10T08:39:39Z Karl_Dscc joined #lisp 2016-08-10T08:42:57Z eivarv quit (Quit: Sleep) 2016-08-10T08:43:35Z Valjan_lisp joined #lisp 2016-08-10T08:51:26Z FreeBirdLjj quit (Read error: Connection reset by peer) 2016-08-10T08:51:44Z FreeBirdLjj joined #lisp 2016-08-10T08:51:52Z nightfly quit (Ping timeout: 244 seconds) 2016-08-10T08:52:47Z nightfly joined #lisp 2016-08-10T08:53:17Z FreeBird_ joined #lisp 2016-08-10T08:55:07Z wccoder joined #lisp 2016-08-10T08:56:25Z FreeBir__ joined #lisp 2016-08-10T08:56:28Z FreeBirdLjj quit (Ping timeout: 252 seconds) 2016-08-10T08:56:53Z harish_ quit (Ping timeout: 244 seconds) 2016-08-10T08:57:50Z FreeBird_ quit (Ping timeout: 258 seconds) 2016-08-10T08:59:42Z wccoder quit (Ping timeout: 258 seconds) 2016-08-10T09:01:57Z araujo__ joined #lisp 2016-08-10T09:03:01Z Harag quit (Quit: Harag) 2016-08-10T09:03:29Z Harag joined #lisp 2016-08-10T09:05:16Z araujo_ quit (Ping timeout: 252 seconds) 2016-08-10T09:08:34Z davsebamse quit (Ping timeout: 258 seconds) 2016-08-10T09:08:48Z Harag quit (Quit: Harag) 2016-08-10T09:09:13Z Harag joined #lisp 2016-08-10T09:09:36Z Harag quit (Client Quit) 2016-08-10T09:10:02Z Harag joined #lisp 2016-08-10T09:10:12Z Harag quit (Client Quit) 2016-08-10T09:10:37Z Harag joined #lisp 2016-08-10T09:12:17Z vap1 joined #lisp 2016-08-10T09:12:18Z vaporatorius quit (Read error: Connection reset by peer) 2016-08-10T09:13:41Z ``Erik_ joined #lisp 2016-08-10T09:14:27Z eivarv_ joined #lisp 2016-08-10T09:15:03Z barbone quit (Quit: KVIrc 4.2.0 Equilibrium http://www.kvirc.net/) 2016-08-10T09:15:05Z ``Erik quit (Ping timeout: 258 seconds) 2016-08-10T09:16:32Z Harag quit (Quit: Harag) 2016-08-10T09:17:08Z Harag joined #lisp 2016-08-10T09:22:10Z Karl_Dscc quit (Remote host closed the connection) 2016-08-10T09:23:19Z mishoo quit (Ping timeout: 260 seconds) 2016-08-10T09:25:17Z sjl quit (Ping timeout: 250 seconds) 2016-08-10T09:26:07Z DeadTrickster joined #lisp 2016-08-10T09:26:58Z dmiles quit (Ping timeout: 258 seconds) 2016-08-10T09:27:46Z Harag quit (Quit: Harag) 2016-08-10T09:28:05Z John[Lisbeth]: Is there a common lisp implementantion of latex so I can point out people should use that instead of latex? 2016-08-10T09:29:36Z dmiles joined #lisp 2016-08-10T09:29:53Z Bike: what on earth would be the point of rewriting latex 2016-08-10T09:30:11Z John[Lisbeth]: So I don't have to learn Latex and I only have to learn common lisp 2016-08-10T09:31:18Z Harag joined #lisp 2016-08-10T09:31:22Z Bike: you would still have to learn latex to use an implementation of it 2016-08-10T09:31:25Z sjl joined #lisp 2016-08-10T09:31:41Z John[Lisbeth]: I couldn't use some domain specific langauge that lets me make pretty pdfs in common lisp? 2016-08-10T09:31:51Z Bike: you could, but that would not be latex 2016-08-10T09:31:57Z Harag quit (Client Quit) 2016-08-10T09:32:01Z John[Lisbeth]: well I mean a common lisp version of it 2016-08-10T09:32:04Z John[Lisbeth]: such as latex or tex 2016-08-10T09:32:15Z Bike: you mean a common lisp typesetting system, not a common lisp latex 2016-08-10T09:32:18Z Bike: latex is a pretty specific thing 2016-08-10T09:32:20Z Harag joined #lisp 2016-08-10T09:32:25Z John[Lisbeth]: I don't know the word for it sorry 2016-08-10T09:32:35Z John[Lisbeth]: yes a lisp typesetting system so I can format pretty characters in pdfs in common lisp 2016-08-10T09:32:41Z sulky quit (Ping timeout: 244 seconds) 2016-08-10T09:32:43Z ggole joined #lisp 2016-08-10T09:33:31Z Bike: i know fare uses this thing https://docs.racket-lang.org/scribble/ 2016-08-10T09:33:37Z Bike: dunno about something in lisp 2016-08-10T09:33:49Z John[Lisbeth]: probably not highly sought after 2016-08-10T09:33:50Z Trystam joined #lisp 2016-08-10T09:34:00Z Bike: well, latex is really good 2016-08-10T09:34:01Z schjetne: John[Lisbeth]: try CommonDoc 2016-08-10T09:34:06Z schjetne: http://commondoc.github.io 2016-08-10T09:34:56Z John[Lisbeth]: It says it uses vertex 2016-08-10T09:35:01Z Tristam quit (Read error: Connection reset by peer) 2016-08-10T09:35:07Z John[Lisbeth]: is this common lisp? https://github.com/CommonDoc/vertex 2016-08-10T09:35:09Z schjetne: You don't have to use it if you don't want to 2016-08-10T09:35:15Z Bike: and then that using tex in a vertex document sucks. heh. 2016-08-10T09:35:16Z John[Lisbeth]: I am just curious about it 2016-08-10T09:35:21Z Harag quit (Client Quit) 2016-08-10T09:35:40Z Harag joined #lisp 2016-08-10T09:36:12Z John[Lisbeth]: oh well thanx 2016-08-10T09:41:03Z Harag quit (Quit: Harag) 2016-08-10T09:41:54Z ovenpasta joined #lisp 2016-08-10T09:42:59Z Harag joined #lisp 2016-08-10T09:43:45Z attila_lendvai joined #lisp 2016-08-10T09:43:45Z attila_lendvai quit (Changing host) 2016-08-10T09:43:45Z attila_lendvai joined #lisp 2016-08-10T09:44:09Z Bike quit (Quit: wake) 2016-08-10T09:50:07Z Karl_Dscc joined #lisp 2016-08-10T09:50:37Z przl quit (Ping timeout: 244 seconds) 2016-08-10T09:50:48Z przl joined #lisp 2016-08-10T09:50:50Z impulse- joined #lisp 2016-08-10T09:51:58Z sulky_ joined #lisp 2016-08-10T09:53:52Z impulse quit (Ping timeout: 244 seconds) 2016-08-10T09:54:31Z kdas__ joined #lisp 2016-08-10T09:59:51Z sjl quit (Ping timeout: 264 seconds) 2016-08-10T10:00:11Z dahailixuxu joined #lisp 2016-08-10T10:00:17Z kdas__ is now known as kushal 2016-08-10T10:00:23Z m00natic joined #lisp 2016-08-10T10:00:27Z kushal quit (Changing host) 2016-08-10T10:00:27Z kushal joined #lisp 2016-08-10T10:03:17Z sjl joined #lisp 2016-08-10T10:03:28Z sulky_ quit (Remote host closed the connection) 2016-08-10T10:04:37Z FreeBir__ quit (Remote host closed the connection) 2016-08-10T10:05:22Z dahailixuxu quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client) 2016-08-10T10:06:33Z Valjan_lisp quit (Ping timeout: 265 seconds) 2016-08-10T10:08:00Z Grue`` joined #lisp 2016-08-10T10:11:13Z quasus joined #lisp 2016-08-10T10:12:22Z eivarv_ quit (Quit: Sleep) 2016-08-10T10:14:13Z FreeBirdLjj joined #lisp 2016-08-10T10:15:35Z d4ryus quit (Ping timeout: 244 seconds) 2016-08-10T10:15:51Z d4ryus joined #lisp 2016-08-10T10:21:47Z stardiviner quit (Ping timeout: 258 seconds) 2016-08-10T10:23:10Z stardiviner joined #lisp 2016-08-10T10:23:28Z sulky_ joined #lisp 2016-08-10T10:30:19Z mishoo joined #lisp 2016-08-10T10:30:59Z attila_lendvai quit (Ping timeout: 260 seconds) 2016-08-10T10:34:55Z sjl quit (Ping timeout: 252 seconds) 2016-08-10T10:39:42Z przl quit (Ping timeout: 276 seconds) 2016-08-10T10:42:30Z eivarv_ joined #lisp 2016-08-10T10:45:23Z ``Erik_ is now known as ``Erik 2016-08-10T10:51:49Z VitoVan joined #lisp 2016-08-10T10:52:25Z VitoVan quit (Client Quit) 2016-08-10T10:53:51Z VitoVan joined #lisp 2016-08-10T10:54:43Z mishoo quit (Ping timeout: 252 seconds) 2016-08-10T10:55:47Z wccoder joined #lisp 2016-08-10T10:55:52Z eivarv_ quit (Quit: Sleep) 2016-08-10T10:56:04Z shdeng quit (Ping timeout: 260 seconds) 2016-08-10T10:56:29Z VitoVan: Hey guys, good day. 2016-08-10T10:57:00Z VitoVan: I recently is reading , I am stuck in chapter 12.4, http://ep.yimg.com/ty/cdn/paulgraham/onlisp.pdf 2016-08-10T10:57:05Z VitoVan: page 184 2016-08-10T10:58:02Z VitoVan: Which the author is trying to construct a macro _f to make things like this: (_f + x y) the same as (incf x y) 2016-08-10T10:58:52Z VitoVan: and then have given a wrong example: (defmacro _f (op place &rest args) '(setf ,place (,op ,place ,@args))) 2016-08-10T10:59:28Z VitoVan: which I can't find anything wrong with this example, and I can't understand why "Unfortunately, we can’t define a correct f with define-modify-macro, because the operator to be applied to the generalized variable is given as an argument." 2016-08-10T10:59:41Z VitoVan: Hope anyone can help, thank you very much! 2016-08-10T11:00:27Z wccoder quit (Ping timeout: 264 seconds) 2016-08-10T11:02:25Z VitoVan: Forgive my poor English, I hope that won't bothering you. 2016-08-10T11:03:15Z malice`: VitoVan: setf is a quasi-magical macro that replaces "setf X Y" with proper form 2016-08-10T11:03:32Z Grue``: fwiw I tried (let ((x (list 1))) (_f + (car x) 10) x) and it works 2016-08-10T11:03:45Z Grue``: there might be some complex case where it fails though 2016-08-10T11:04:46Z Grue``: something about ,place being evaluated twice 2016-08-10T11:04:47Z VitoVan: malice`: then what's the problem? 2016-08-10T11:05:37Z Grue``: for example Graham offers the example (incf (aref a (incf i))). with the naive implementation i would be incremented twice 2016-08-10T11:05:47Z Grue``: or something 2016-08-10T11:06:05Z VitoVan: Grue``: Yes, I aware the eval twice thing, but it should be *not good* instead of **wrong** 2016-08-10T11:06:33Z VitoVan: Thank you Grue`` 2016-08-10T11:06:37Z jdz: in C that would be "not good", in CL it is "wrong" 2016-08-10T11:07:51Z VitoVan: Right, the double evals of incf is truly wrong. 2016-08-10T11:08:18Z quasus quit (Ping timeout: 276 seconds) 2016-08-10T11:08:20Z shdeng joined #lisp 2016-08-10T11:09:47Z impaktor quit (Read error: Connection reset by peer) 2016-08-10T11:14:23Z VitoVan: Thank you very much Grue``, and malice and jdz, problem solved, what a magical place~ 2016-08-10T11:16:18Z przl joined #lisp 2016-08-10T11:17:47Z shdeng quit (Quit: Leaving) 2016-08-10T11:18:36Z valjan_lisp2 quit (Ping timeout: 250 seconds) 2016-08-10T11:19:20Z pipping: there's no place like (user-homedir-pathname) 2016-08-10T11:20:33Z strelox quit (Ping timeout: 250 seconds) 2016-08-10T11:21:08Z przl quit (Ping timeout: 250 seconds) 2016-08-10T11:22:57Z sjl joined #lisp 2016-08-10T11:25:16Z impaktor joined #lisp 2016-08-10T11:25:44Z tristam__ joined #lisp 2016-08-10T11:29:06Z Trystam quit (Ping timeout: 276 seconds) 2016-08-10T11:31:00Z Beetny quit (Ping timeout: 244 seconds) 2016-08-10T11:34:52Z VitoVan quit (Quit: Leaving) 2016-08-10T11:35:53Z vito_ joined #lisp 2016-08-10T11:36:14Z kdas__ joined #lisp 2016-08-10T11:36:17Z vito_ is now known as Guest44279 2016-08-10T11:36:42Z Guest44279 is now known as VitoVan 2016-08-10T11:37:29Z araujo__ quit (Quit: Leaving) 2016-08-10T11:37:55Z araujo joined #lisp 2016-08-10T11:37:55Z araujo quit (Changing host) 2016-08-10T11:37:55Z araujo joined #lisp 2016-08-10T11:38:25Z VitoVan quit (Client Quit) 2016-08-10T11:38:36Z kushal quit (Ping timeout: 244 seconds) 2016-08-10T11:39:02Z kdas__ is now known as kushal 2016-08-10T11:39:08Z kushal quit (Changing host) 2016-08-10T11:39:08Z kushal joined #lisp 2016-08-10T11:39:42Z papachan joined #lisp 2016-08-10T11:41:10Z quazimodo joined #lisp 2016-08-10T11:41:34Z VitoVan joined #lisp 2016-08-10T11:42:20Z whiteline quit (Read error: Connection reset by peer) 2016-08-10T11:43:33Z TCZ joined #lisp 2016-08-10T11:49:05Z stardiviner quit (Ping timeout: 244 seconds) 2016-08-10T11:59:06Z Harag quit (Ping timeout: 250 seconds) 2016-08-10T12:02:05Z eivarv_ joined #lisp 2016-08-10T12:02:44Z flip214: does lparallel have some sort function as well? 2016-08-10T12:02:55Z whiteline joined #lisp 2016-08-10T12:03:14Z przl joined #lisp 2016-08-10T12:05:53Z scymtym: flip214: there is LPARALLEL:PSORT which can sort vectors in parallel (according to the documentation string) 2016-08-10T12:06:35Z whiteline quit (Client Quit) 2016-08-10T12:06:48Z whiteline joined #lisp 2016-08-10T12:08:21Z ramky quit (Quit: Leaving) 2016-08-10T12:08:21Z przl quit (Ping timeout: 265 seconds) 2016-08-10T12:10:08Z flip214: scymtym: thanks a lot, didn't see that in the documentation at https://lparallel.org/api/ 2016-08-10T12:10:35Z sellout- quit (Quit: Leaving.) 2016-08-10T12:10:38Z flip214: ah, hiding in "Cognates" 2016-08-10T12:13:58Z helio joined #lisp 2016-08-10T12:16:37Z eivarv_ quit (Quit: Sleep) 2016-08-10T12:17:20Z eivarv_ joined #lisp 2016-08-10T12:22:27Z mishoo joined #lisp 2016-08-10T12:26:16Z ksool quit (Ping timeout: 264 seconds) 2016-08-10T12:27:48Z VitoVan quit (Quit: rcirc on GNU Emacs 25.1.1) 2016-08-10T12:27:52Z przl joined #lisp 2016-08-10T12:28:33Z eivarv_ quit (Quit: Sleep) 2016-08-10T12:29:48Z ksool joined #lisp 2016-08-10T12:30:01Z FreeBirdLjj quit (Remote host closed the connection) 2016-08-10T12:32:28Z ovenpasta1 joined #lisp 2016-08-10T12:32:51Z ovenpasta quit (Remote host closed the connection) 2016-08-10T12:32:52Z ovenpasta1 is now known as ovenpasta 2016-08-10T12:34:12Z harish_ joined #lisp 2016-08-10T12:35:39Z hhdave joined #lisp 2016-08-10T12:37:02Z beach joined #lisp 2016-08-10T12:37:06Z papachan quit (Ping timeout: 258 seconds) 2016-08-10T12:37:15Z beach: Good afternoon everyone! 2016-08-10T12:38:05Z M-moredhel quit (Remote host closed the connection) 2016-08-10T12:38:05Z M-Illandan quit (Remote host closed the connection) 2016-08-10T12:38:12Z DeadTrickster quit (Ping timeout: 258 seconds) 2016-08-10T12:38:16Z strelox joined #lisp 2016-08-10T12:41:32Z eivarv_ joined #lisp 2016-08-10T12:44:51Z Munksgaard quit (Quit: Leaving.) 2016-08-10T12:47:07Z arpunk joined #lisp 2016-08-10T12:47:34Z TCZ quit (Quit: Leaving) 2016-08-10T12:47:56Z stardiviner joined #lisp 2016-08-10T12:48:56Z kushal quit (Quit: Leaving) 2016-08-10T12:52:10Z Munksgaard joined #lisp 2016-08-10T12:53:36Z eivarv_ quit (Quit: Sleep) 2016-08-10T12:57:25Z coetry joined #lisp 2016-08-10T12:58:51Z coetry quit (Client Quit) 2016-08-10T13:01:15Z stardiviner quit (Quit: Code, Sex, Just fucking world.) 2016-08-10T13:03:24Z M-moredhel joined #lisp 2016-08-10T13:04:37Z Xach: Hello beach 2016-08-10T13:05:28Z fourier quit (Ping timeout: 265 seconds) 2016-08-10T13:06:34Z lexicall joined #lisp 2016-08-10T13:06:37Z kushal joined #lisp 2016-08-10T13:08:10Z DeadTrickster joined #lisp 2016-08-10T13:10:40Z stardiviner joined #lisp 2016-08-10T13:11:12Z prole joined #lisp 2016-08-10T13:11:48Z prole quit (Client Quit) 2016-08-10T13:12:06Z prole joined #lisp 2016-08-10T13:12:55Z freehck quit (Remote host closed the connection) 2016-08-10T13:13:36Z davsebamse joined #lisp 2016-08-10T13:14:41Z LiamH joined #lisp 2016-08-10T13:15:01Z jerme joined #lisp 2016-08-10T13:15:06Z przl quit (Ping timeout: 250 seconds) 2016-08-10T13:16:45Z Guest30042 quit (Quit: ZNC - http://znc.in) 2016-08-10T13:17:15Z stardiviner quit (Ping timeout: 264 seconds) 2016-08-10T13:17:38Z tiago joined #lisp 2016-08-10T13:17:38Z tiago quit (Changing host) 2016-08-10T13:17:38Z tiago joined #lisp 2016-08-10T13:24:48Z helio quit 2016-08-10T13:25:07Z StephanLahl quit (Read error: Connection reset by peer) 2016-08-10T13:27:40Z przl joined #lisp 2016-08-10T13:30:49Z FreeBirdLjj joined #lisp 2016-08-10T13:34:43Z stardiviner joined #lisp 2016-08-10T13:36:11Z thortron joined #lisp 2016-08-10T13:36:28Z FreeBirdLjj quit (Ping timeout: 264 seconds) 2016-08-10T13:37:14Z oleo joined #lisp 2016-08-10T13:41:12Z kushal quit (Ping timeout: 244 seconds) 2016-08-10T13:42:34Z fourier joined #lisp 2016-08-10T13:42:39Z kushal joined #lisp 2016-08-10T13:43:00Z mishoo quit (Ping timeout: 276 seconds) 2016-08-10T13:46:19Z nzambe joined #lisp 2016-08-10T13:49:38Z Karl_Dscc quit (Remote host closed the connection) 2016-08-10T13:50:39Z smokeink joined #lisp 2016-08-10T13:54:02Z madmalik quit (Quit: Connection closed for inactivity) 2016-08-10T13:54:29Z Posterdati: hi 2016-08-10T13:54:34Z freehck joined #lisp 2016-08-10T13:56:06Z Posterdati: I've got problem to quickload antik on sbcl 1.3.8-26 for x86_64: caught error: illegal function call 2016-08-10T13:56:40Z lexicall quit (Quit: Ah, my macbook is gonna sleep!) 2016-08-10T13:56:44Z beach: What code is causing the problem? 2016-08-10T13:57:34Z wccoder joined #lisp 2016-08-10T13:58:45Z Posterdati: cffi-libffi 2016-08-10T13:59:11Z beach: Can you be more specific? What form is causing the problem? 2016-08-10T13:59:12Z jerme quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client) 2016-08-10T13:59:56Z ovenpasta quit (Remote host closed the connection) 2016-08-10T14:00:31Z Posterdati: Illegal function call 2016-08-10T14:00:51Z jackdaniel: Posterdati: beach asks for a particular code snippet which contains that illegal function call 2016-08-10T14:00:55Z Posterdati: While evaluating the form starting at line 30, column 0 2016-08-10T14:01:03Z jackdaniel: you may find it with a backtrace for instance 2016-08-10T14:01:28Z beach: Posterdati: Can you give us the form starting at line 30, column 0? 2016-08-10T14:02:09Z wccoder quit (Ping timeout: 258 seconds) 2016-08-10T14:02:52Z Posterdati: (eval-when (:compile-toplevel :execute) (asdf:oos 'asdf:load-op :cffi-grovel) (asdf:oos 'asdf:load-op :trivial-features)) 2016-08-10T14:04:33Z beach: I don't see anything wrong with that code. 2016-08-10T14:05:07Z wildlander joined #lisp 2016-08-10T14:05:10Z Posterdati: *features* reports :asdf3.1 2016-08-10T14:05:11Z papachan joined #lisp 2016-08-10T14:05:22Z beach: There is no illegal function call in that form. 2016-08-10T14:05:45Z quazimodo quit (Ping timeout: 276 seconds) 2016-08-10T14:06:28Z al-damiri joined #lisp 2016-08-10T14:09:41Z ovenpasta joined #lisp 2016-08-10T14:10:32Z przl quit (Ping timeout: 240 seconds) 2016-08-10T14:11:30Z Denommus joined #lisp 2016-08-10T14:12:34Z papachan quit (Ping timeout: 265 seconds) 2016-08-10T14:13:05Z Karl_Dscc joined #lisp 2016-08-10T14:14:11Z quazimodo joined #lisp 2016-08-10T14:14:41Z eivarv_ joined #lisp 2016-08-10T14:18:02Z scymtym: antik seems to depend on gsll. over the last weeks people have reported problems with gsll caused by changes in the gsl C library that are not (yet) reflected in the gsll ffi bindings. the only suggestion i have seen is downgrading the gsl C library 2016-08-10T14:18:36Z sampiero joined #lisp 2016-08-10T14:18:41Z sampiero: hi 2016-08-10T14:18:56Z beach: Hello sampiero. 2016-08-10T14:19:16Z LiamH: antik-base can be loaded without GSLL 2016-08-10T14:20:09Z harish_ quit (Quit: Leaving) 2016-08-10T14:20:20Z sampiero: http://paste.lisp.org/display/322684 2016-08-10T14:20:29Z harish_ joined #lisp 2016-08-10T14:20:49Z sampiero: this is the problem trying to load :cffi-libffi 2016-08-10T14:21:02Z Denommus quit (Quit: ERC Version 5.3 (IRC client for Emacs)) 2016-08-10T14:21:02Z sampiero: and thus :antik 2016-08-10T14:21:03Z burtons joined #lisp 2016-08-10T14:21:16Z fourier quit (Ping timeout: 265 seconds) 2016-08-10T14:21:29Z przl joined #lisp 2016-08-10T14:21:58Z beach: It looks like there is a conditional form that is not recognized as such. 2016-08-10T14:22:07Z Munksgaard1 joined #lisp 2016-08-10T14:22:39Z Munksgaard quit (Ping timeout: 276 seconds) 2016-08-10T14:22:44Z beach: Can you paste the contents of the file asdf-compat.lisp? 2016-08-10T14:22:55Z sampiero: LiamH: I need gsll too 2016-08-10T14:23:43Z LiamH: sampiero: OK, well just keep in mind it will not load with GSL 2.x. However, I have in the repo a version that may load. 2016-08-10T14:23:59Z sampiero: :( 2016-08-10T14:24:14Z Grue`` quit (Remote host closed the connection) 2016-08-10T14:24:59Z papachan joined #lisp 2016-08-10T14:25:32Z eivarv_ quit (Quit: Sleep) 2016-08-10T14:25:48Z sampiero: http://paste.lisp.org/display/322684#1 2016-08-10T14:26:45Z beach: I don't think the code in that paste corresponds to the code giving the error. 2016-08-10T14:27:29Z scymtym: beach: i think it does. it may be OS-COND again 2016-08-10T14:27:48Z sampiero: I pasted the file you told me 2016-08-10T14:28:51Z sampiero: and? 2016-08-10T14:29:02Z scymtym: assuming OS-COND to be a function would put things like ((UIOP/OS:OS-WINDOWS-P) "dll") mentioned in the error message in an evaluated position 2016-08-10T14:29:05Z milanj joined #lisp 2016-08-10T14:29:05Z beach: I OK, I see it. 2016-08-10T14:29:24Z beach: Yes, os-cond is not recognized as a macro. 2016-08-10T14:29:39Z beach: That is what I meant by a conditional form that is not recognized as such. 2016-08-10T14:29:48Z sampiero: ok 2016-08-10T14:29:50Z hel-io_ joined #lisp 2016-08-10T14:29:53Z sampiero: is there a cure? 2016-08-10T14:29:59Z scymtym: sampiero: not sure, but your asdf may be too old (see http://ircbrowse.net/browse/lisp?q=os-cond). 2016-08-10T14:30:08Z pierpa joined #lisp 2016-08-10T14:30:14Z scymtym: what is your asdf version? 2016-08-10T14:30:30Z sampiero: :ASDF-PACKAGE-SYSTEM :ASDF3.1 :ASDF3 :ASDF2 :ASDF :OS-UNIX 2016-08-10T14:31:10Z scymtym: please try (asdf:component-version (asdf:find-system :asdf)) 2016-08-10T14:31:43Z sampiero: "3.1.5" 2016-08-10T14:33:05Z jerme joined #lisp 2016-08-10T14:34:29Z sampiero: ? 2016-08-10T14:35:00Z StephanLahl joined #lisp 2016-08-10T14:35:35Z scymtym: sorry, that macro seems to be provided by the uiop system. what does (asdf:component-version (asdf:find-system :uiop)) report? 2016-08-10T14:35:47Z mathi_aihtam quit (Quit: mathi_aihtam) 2016-08-10T14:37:12Z davsebamse quit (Ping timeout: 240 seconds) 2016-08-10T14:37:17Z sampiero: "3.1.0.4" 2016-08-10T14:38:13Z sampiero: from the latest quicklisp installation 2016-08-10T14:38:25Z Xach: quicklisp doesn't provide asdf 3. it comes with your implementation. 2016-08-10T14:38:30Z Xach: or manually 2016-08-10T14:38:42Z sampiero: uiop too? 2016-08-10T14:38:45Z jackdaniel: yes 2016-08-10T14:39:12Z Xach: quicklisp *does* provide uiop. 2016-08-10T14:39:50Z Yuuhi joined #lisp 2016-08-10T14:40:02Z sampiero: is "3.1.0.4" the latest uiop? 2016-08-10T14:40:25Z Xach: No, 3.1.6 is available. Not sure if that's the newest, but it is newer. 2016-08-10T14:42:27Z jackdaniel: oh, sorry 2016-08-10T14:43:21Z devon joined #lisp 2016-08-10T14:43:23Z M-Illandan joined #lisp 2016-08-10T14:43:28Z devon: g'day all 2016-08-10T14:43:37Z zacharias joined #lisp 2016-08-10T14:43:37Z sampiero: not to all 2016-08-10T14:43:44Z beach: Hello devon. 2016-08-10T14:44:48Z devon: Know of a file output stream that automatically takes care of preventing partially written files from appearing under the real file name? 2016-08-10T14:44:59Z adolf_stalin joined #lisp 2016-08-10T14:46:43Z devon: E.g., as Emacs makes foo a placeholder link to nowhere, writes to #foo# and then renames it to the final real foo. 2016-08-10T14:48:10Z dyelar joined #lisp 2016-08-10T14:49:17Z cromachina: http://clhs.lisp.se/Body/f_finish.htm these functions help with flushing streams 2016-08-10T14:50:45Z quazimodo quit (Ping timeout: 265 seconds) 2016-08-10T14:51:52Z scymtym: cffi-toolchain.asd seems to assume that the asdf version is identical to the uiop version 2016-08-10T14:52:31Z sampiero: scymtym: I'm trying with ecl 16.1.2 2016-08-10T14:55:05Z devon: Here I go reinventing this old wheel once again. I should set it to music, _the Lisper's Lament_ 2016-08-10T14:55:24Z sampiero: http://paste.lisp.org/display/322684#2 2016-08-10T14:55:31Z sampiero: scymtym: http://paste.lisp.org/display/322684#2 2016-08-10T14:56:35Z hel-io_ quit 2016-08-10T14:56:48Z sampiero: so this is not a problem from sbcl or ecl either 2016-08-10T14:59:43Z eivarv joined #lisp 2016-08-10T15:01:49Z scymtym: sampiero: no, the original seems to be that cffi-toolchain depends on a newer version of uiop without making that dependency explicit 2016-08-10T15:02:04Z sampiero: wait a minute 2016-08-10T15:03:34Z sampiero: I had an asdf inside my lisp projects directory, which is always added to the (user-homedir-pathname) 2016-08-10T15:05:26Z sjl quit (Ping timeout: 250 seconds) 2016-08-10T15:05:59Z fourier joined #lisp 2016-08-10T15:08:23Z sampiero: solved 2016-08-10T15:08:53Z sampiero: thanks to all of you people 2016-08-10T15:09:22Z stardiviner quit (Quit: Code, Sex, Just fucking world.) 2016-08-10T15:12:11Z mathi_aihtam joined #lisp 2016-08-10T15:19:07Z vydd quit (Remote host closed the connection) 2016-08-10T15:20:49Z eivarv quit (Quit: Sleep) 2016-08-10T15:21:32Z edgar-rft quit (Quit: edgar-rft) 2016-08-10T15:23:06Z fourier quit (Ping timeout: 276 seconds) 2016-08-10T15:24:18Z fourier joined #lisp 2016-08-10T15:28:06Z sellout- joined #lisp 2016-08-10T15:31:00Z davsebamse joined #lisp 2016-08-10T15:39:01Z sjl__ joined #lisp 2016-08-10T15:43:48Z flamebeard quit (Quit: Leaving) 2016-08-10T15:45:51Z shka quit (Ping timeout: 276 seconds) 2016-08-10T15:45:53Z vydd joined #lisp 2016-08-10T15:47:07Z dmiles quit (Ping timeout: 244 seconds) 2016-08-10T15:47:18Z DGASAU quit (Read error: Connection reset by peer) 2016-08-10T15:48:29Z DGASAU joined #lisp 2016-08-10T15:48:33Z burtons quit (Quit: My Mac has gone to sleep. ZZZzzz…) 2016-08-10T15:48:34Z jack_rip_vim joined #lisp 2016-08-10T15:49:09Z dmiles joined #lisp 2016-08-10T15:50:58Z dmiles quit (Excess Flood) 2016-08-10T15:51:03Z phoe quit (Ping timeout: 276 seconds) 2016-08-10T15:51:46Z jack_rip_vim: is that possible to comfirm a port's type when we connect to a address? 2016-08-10T15:52:00Z holycow joined #lisp 2016-08-10T15:52:03Z davsebamse quit (Ping timeout: 264 seconds) 2016-08-10T15:52:20Z dmiles joined #lisp 2016-08-10T15:52:49Z jack_rip_vim: like a port belong to http or ssh. 2016-08-10T15:53:08Z Xach: jack_rip_vim: sometimes it is easy, sometimes it is not. 2016-08-10T15:53:22Z burtons joined #lisp 2016-08-10T15:53:26Z Xach: jack_rip_vim: it depends on the protocol. sometimes the server talks first and you can confirm expectations, somewhat. sometimes the server waits and you must try a conversation and see what happens. 2016-08-10T15:53:30Z Xach: (not lisp-specific) 2016-08-10T15:54:00Z jack_rip_vim: ok, thanks 2016-08-10T15:54:25Z strelox quit (Ping timeout: 250 seconds) 2016-08-10T15:54:53Z cromachina: nmap seems like the right tool for this 2016-08-10T15:55:39Z attila_lendvai joined #lisp 2016-08-10T15:55:39Z attila_lendvai quit (Changing host) 2016-08-10T15:55:39Z attila_lendvai joined #lisp 2016-08-10T15:55:52Z jack_rip_vim: but i want to try on lisp 2016-08-10T15:55:52Z przl quit (Ping timeout: 240 seconds) 2016-08-10T15:56:12Z Xach: jack_rip_vim: it involves learning a lot about the protocols you want to test. not a bad thing. 2016-08-10T15:56:59Z jack_rip_vim: ok, :D 2016-08-10T15:57:15Z plertroo` joined #lisp 2016-08-10T15:57:19Z jack_rip_vim: thanks 2016-08-10T15:57:27Z cromachina: and if you dont care to learn, but still want to use lisp, you can load the nmap library with CFFI 2016-08-10T15:57:53Z jack_rip_vim: i will try it 2016-08-10T15:58:03Z jack_rip_vim: :) 2016-08-10T15:58:25Z fourier quit (Ping timeout: 265 seconds) 2016-08-10T15:59:16Z jack_rip_vim: thanks your guys. 2016-08-10T16:02:53Z eivarv joined #lisp 2016-08-10T16:05:40Z jaykru joined #lisp 2016-08-10T16:09:06Z jack_rip_vim left #lisp 2016-08-10T16:09:48Z jaykru: is there any canon way to convert an integer to list of its constituent bytes in CL? 2016-08-10T16:09:55Z akkad: open a socket and send text 2016-08-10T16:11:58Z phoe joined #lisp 2016-08-10T16:11:59Z wccoder joined #lisp 2016-08-10T16:12:49Z cromachina: jaykru, ldb is one way 2016-08-10T16:13:10Z cromachina: http://clhs.lisp.se/Body/f_ldb.htm 2016-08-10T16:14:20Z malice`: jaykru: I've used the method from these posts: http://www.lispforum.com/viewtopic.php?f=2&t=1205 2016-08-10T16:14:49Z jaykru: cromachina, nice thanks! most explanations I've seen involve printing to binary then parsing the string 8 bits at a time. 2016-08-10T16:15:28Z jack_rip_vim joined #lisp 2016-08-10T16:18:14Z kushal quit (Ping timeout: 258 seconds) 2016-08-10T16:20:20Z papachan quit (Ping timeout: 244 seconds) 2016-08-10T16:22:40Z smokeink quit (Ping timeout: 265 seconds) 2016-08-10T16:24:21Z strelox joined #lisp 2016-08-10T16:25:14Z Xach: Thsoe are bad explanations and should be reprimanded 2016-08-10T16:26:06Z jack_rip_vim: i will figure out it 2016-08-10T16:29:09Z scymtym: for small integers (up to 64 bits), the nibbles library provides (setf (nibbles:ub{16,32,64}ref/{le,be} SIMPLE-UB8-ARRAY) INTEGER) and makes it super-efficient under some circumstances 2016-08-10T16:30:09Z wooden_ quit (Read error: Connection reset by peer) 2016-08-10T16:30:47Z jack_rip_vim: :) 2016-08-10T16:32:49Z papachan joined #lisp 2016-08-10T16:33:38Z wooden_ joined #lisp 2016-08-10T16:34:51Z FreeBirdLjj joined #lisp 2016-08-10T16:35:23Z jdz: known sizes are easy 2016-08-10T16:36:35Z jack_rip_vim: :) 2016-08-10T16:36:52Z sjl__ is now known as sjl 2016-08-10T16:37:49Z Munksgaard1 quit (Quit: Leaving.) 2016-08-10T16:39:25Z plertroo` left #lisp 2016-08-10T16:39:30Z FreeBirdLjj quit (Ping timeout: 265 seconds) 2016-08-10T16:46:33Z hhdave quit (Ping timeout: 240 seconds) 2016-08-10T16:52:12Z Bike joined #lisp 2016-08-10T16:52:41Z jack_rip_vim left #lisp 2016-08-10T16:52:59Z kdas__ joined #lisp 2016-08-10T16:55:58Z shka_ joined #lisp 2016-08-10T16:56:00Z trig-ger quit (Ping timeout: 244 seconds) 2016-08-10T16:56:20Z trig-ger joined #lisp 2016-08-10T16:57:02Z kdas__ is now known as kushal 2016-08-10T16:57:08Z kushal quit (Changing host) 2016-08-10T16:57:08Z kushal joined #lisp 2016-08-10T16:59:37Z tobel quit (Ping timeout: 244 seconds) 2016-08-10T16:59:57Z tobel joined #lisp 2016-08-10T17:04:57Z phoe: I have a design question regarding locks. 2016-08-10T17:05:26Z phoe: Currently I have a class that has three slots. I want access to these three slots to be thread-safe so I design three locks for these three slots. 2016-08-10T17:05:42Z phoe: So now I'm up to six slots. 2016-08-10T17:05:58Z jasom: phoe: do you ever need to update two slots atomically? 2016-08-10T17:06:22Z phoe: jasom: what do you mean, update them atomically? Both at once? 2016-08-10T17:06:32Z phoe: No, this would result in a pretty bad deadlock anyway. 2016-08-10T17:06:42Z jasom: phoe: yeah, change slot A and slot B in such a way that nobody should see old slot A and new slot B value (for example) 2016-08-10T17:07:01Z phoe: But my question is sort of different. 2016-08-10T17:07:16Z jasom: the real solution is to have only a single thread that ever writes to a given slot :) 2016-08-10T17:07:33Z jaykru quit (Ping timeout: 240 seconds) 2016-08-10T17:07:52Z pierpa: another solution is to have immutable objects :) 2016-08-10T17:07:58Z jasom: phoe: sorry to interrupt you; what is your question? 2016-08-10T17:08:00Z phoe: Right now I'm having things like (with-lock-held ((lock-a my-instance)) (let ((a (a my-instance))) ...)) 2016-08-10T17:08:05Z phoe: jasom: no problem 2016-08-10T17:08:40Z jasom: phoe: looks reasonable as these things go (though with-slots might be more clear) 2016-08-10T17:11:00Z zacharias quit (Ping timeout: 265 seconds) 2016-08-10T17:12:37Z phoe: I think I know what I want to do. 2016-08-10T17:12:52Z phoe: I want to write my own accessor functions so they incorporate acquire-lock. 2016-08-10T17:13:34Z jasom: phoe: my experience is that if I have to write locking code I'm going to have heisenbugs in my future. This despite the fact that I appear to be well above average at getting mutlithreaded code right 2016-08-10T17:13:52Z jasom: mutable shared state is the root of all evil 2016-08-10T17:14:01Z phoe: well, fsck. 2016-08-10T17:14:07Z phoe: Okay, let's have another go at it. 2016-08-10T17:14:13Z mastokley joined #lisp 2016-08-10T17:14:22Z phoe: Only a single thread that ever writes to a given slot? 2016-08-10T17:14:27Z jasom: C.A.R. Hoare wrote a paper on it a long time ago. 2016-08-10T17:14:34Z BlueRavenGT joined #lisp 2016-08-10T17:14:39Z phoe: This makes me need to redo my design. 2016-08-10T17:14:40Z phoe: But is doable. 2016-08-10T17:14:43Z dwchandler: jasom: that you worry about heisenbugs if why you're above average ;-) 2016-08-10T17:15:02Z jaykru joined #lisp 2016-08-10T17:15:09Z dwchandler: *is why 2016-08-10T17:15:45Z jasom: my dad had to read the CSP paper when he got his masters; he said 2/3 of the class didn't understand the problem that Hoare was talking about and 2/3 of the remainder thought that Hoare was exagerrating the problem. They then all went on to write hard to reason about multithreaded code with mutable shared state. 2016-08-10T17:16:12Z dwchandler: heh 2016-08-10T17:16:36Z dwchandler: too bad rob pike only thought he understood hoare's paper 2016-08-10T17:16:49Z ggole: jasom: one writer many readers? Or just only one thread accessing the thing at all? 2016-08-10T17:17:24Z jasom: ggole: one writer many readers is easier to get correct and N readers or 1 reader/writer (i.e. no mutable shared state) is even easier to get correct 2016-08-10T17:17:49Z phoe: Okay, so - the deal is like that. 2016-08-10T17:18:08Z phoe: I'm writing a server where there are multiple connections (sockets) and an event queue. 2016-08-10T17:18:16Z jasom: using pure functional datastructures avoids mutable shared state by having no mutability. Using processes rather than threads avoids it by avoiding shared state. 2016-08-10T17:18:35Z phoe: How should I go about multithreading it? 2016-08-10T17:18:43Z jasom: phoe: where is your state stored? 2016-08-10T17:19:02Z phoe: jasom: connections, because they're I/O, and the event queue. 2016-08-10T17:19:14Z jasom: phoe: Does it serve up non-static data? 2016-08-10T17:19:21Z ggole: jasom: Mmm. (There's also affinity, which allows mutation but only when there is no sharing.) 2016-08-10T17:19:39Z phoe: jasom: yes, it does. 2016-08-10T17:19:47Z jasom: ggole: yup, and that's really cool and an improvement over the previous solutions 2016-08-10T17:19:53Z jasom: phoe: who can modify that data? 2016-08-10T17:19:55Z phoe: Like - I want to do user creation and basic authentication on there. 2016-08-10T17:20:09Z jasom: phoe: the per-connection state never need be shared between threads 2016-08-10T17:20:10Z phoe: I must assume that everyone who connects will want to create or modify an account. 2016-08-10T17:20:20Z phoe: jasom: there's a problem. 2016-08-10T17:20:28Z phoe: Should I create one thread per connection? 2016-08-10T17:20:37Z phoe: And, if yes, what if I end up with a huge amount of threads? 2016-08-10T17:20:51Z jasom: phoe: no you create 1 thread per core if you can use asynchronous communication 2016-08-10T17:21:13Z phoe: Yes, I guessed as much. 2016-08-10T17:21:17Z jasom: phoe: but then no connection will ever be referrenced by two threads at the same time (it goes back in the queue when it quiesces, and one thread pulls it off when it is active) 2016-08-10T17:21:17Z jaykru quit (Quit: Leaving) 2016-08-10T17:21:49Z phoe: Wait wait. 2016-08-10T17:21:55Z phoe: I don't have a queue of connections. 2016-08-10T17:21:57Z phoe: I have a queue of events. 2016-08-10T17:22:11Z jasom: right, and each event carries with it which connection it is associated with, right? 2016-08-10T17:22:20Z prole quit (Ping timeout: 244 seconds) 2016-08-10T17:22:25Z jasom: and hopefully you won't ever have a thread associated with two events simultaneously? 2016-08-10T17:22:28Z jasom: s/thread/connection 2016-08-10T17:22:40Z phoe: An event doesn't have to be associated with a connection. 2016-08-10T17:23:02Z jasom: but a connection that isn't actively running must be associated with an event, no? 2016-08-10T17:23:13Z phoe: Let me explain a bit more. 2016-08-10T17:24:01Z phoe: A connection can send a request, "create object A with data B", which is accidentally and conveniently also a sexp. 2016-08-10T17:24:31Z phoe: A thread finds out that the connection is ready, it grabs that request and puts it on the queue. 2016-08-10T17:24:33Z jasom: phoe: and where is object A stored in that case? 2016-08-10T17:25:01Z phoe: it's stored in a variable. 2016-08-10T17:25:11Z jasom: so no database being used? 2016-08-10T17:25:13Z phoe: Which is basically a hashtable or another sort of data structure. 2016-08-10T17:25:15Z phoe: jasom: not yet. 2016-08-10T17:25:47Z phoe: I want to bother the database later on. 2016-08-10T17:25:52Z jasom: you will simplify simultaneous access if you use a database, as they are designed as giant stores of mutable shared state, so inasmuch as it's possible to get that right, other people have done the hard work. 2016-08-10T17:26:02Z phoe: hm. 2016-08-10T17:26:11Z jasom: there is a performance cost to this, naturally. 2016-08-10T17:26:21Z phoe: someday I'll have to. 2016-08-10T17:26:38Z phoe: because the size of the data will outweigh the performance cost. 2016-08-10T17:27:26Z phoe: I need to go back to the whiteboard. 2016-08-10T17:28:02Z jasom: I would recommend, if you're not using a database, to at least serialize all access to the store in a single thread (that is the connection worker-threads send requests to the storage thread, and the storage thread linearizes the reads and writes). 2016-08-10T17:28:39Z phoe: How do I solve the problem that the storage thread queue has multiple writers? 2016-08-10T17:28:50Z phoe: Will a JPL-QUEUES:SYNCHRONIZED-QUEUE do? 2016-08-10T17:28:53Z jasom: phoe: use a library with a thread-safe queue 2016-08-10T17:28:59Z m00natic quit (Read error: Connection reset by peer) 2016-08-10T17:29:00Z phoe: oh right 2016-08-10T17:29:02Z phoe: very good. 2016-08-10T17:29:07Z cromachina: like chanl 2016-08-10T17:29:45Z jasom: we can't get away from mutexes existing somewhere (lock-free algorithms aside), but we can limit them to areas where it is possible to completely reason about their use 2016-08-10T17:30:18Z cromachina: or maybe something implementation specific like sb-concurrency:queue 2016-08-10T17:30:21Z cromachina: http://www.sbcl.org/manual/#sb_002dconcurrency 2016-08-10T17:30:32Z jasom: If you have < 10k lines of code that uses the data and the mutexes, then it's very reasonable to get it completely correct. This is part of why my dad's classmates thought Hoare was wrong. There aren't any toy examples that prove him right. 2016-08-10T17:30:40Z cromachina: which is lock-free like jasom suggests 2016-08-10T17:30:41Z sjl quit (Read error: Connection reset by peer) 2016-08-10T17:31:22Z jasom: also, lock-free algorithms are, if anything, *harder* to get right than mutexes, so the whole "avoiding mutexes" is really a shorthand for "avoiding mutable shared state" where mutexes or fancy lock-free algorithms are necessary. 2016-08-10T17:31:38Z papachan quit (Ping timeout: 250 seconds) 2016-08-10T17:31:47Z burtons is now known as BusFactor1 2016-08-10T17:35:22Z Josh2 joined #lisp 2016-08-10T17:39:33Z phoe: So, basically. 2016-08-10T17:39:38Z phoe: A thread may only own one lock at a time. 2016-08-10T17:39:39Z Trystam joined #lisp 2016-08-10T17:41:48Z Petit_Dejeuner quit (Remote host closed the connection) 2016-08-10T17:42:49Z tristam__ quit (Ping timeout: 265 seconds) 2016-08-10T17:43:56Z rick-monster quit (Read error: Connection reset by peer) 2016-08-10T17:44:30Z papachan joined #lisp 2016-08-10T17:44:32Z phoe: s/own/hold/ 2016-08-10T17:45:20Z Munksgaard joined #lisp 2016-08-10T17:45:34Z jasom: phoe: basically you should never have code where the amount of code using a given piece of mutable shared state is larger than what you can keep in your head all at once. 2016-08-10T17:46:05Z jasom: with a queue, the only mutable shared state is completely contained in the queue code (unless you are evil and decide to queue up references to things that you will mutate after putting in the queue) 2016-08-10T17:46:23Z jasom: and since queue code is on the order of hundreds of lines of code, it's easy to get right 2016-08-10T17:46:46Z phoe: well, I don't want to mutate stuff that's in the queue. 2016-08-10T17:46:47Z jasom: a thread safe queue can fit on a single page of paper at reasonable font sizes 2016-08-10T17:47:23Z jasom: I learned a lot of this the hard way, and the better you are at reasoning about code, the longer you can go thinking that there's nothing wrong with it. 2016-08-10T17:48:22Z phoe: I'm thinking of a very simple worker model here. 2016-08-10T17:48:52Z phoe: Basically a thread has only one pair of hands and can only "hold" one thing at a time. And acquiring/putting things in a place is atomic by means of a lock. 2016-08-10T17:49:16Z SumoSudo joined #lisp 2016-08-10T17:49:48Z cromachina: you are almost at the actor model 2016-08-10T17:49:58Z jasom: phoe: this is a very good model 2016-08-10T17:50:05Z phoe: cromachina: yay!? 2016-08-10T17:50:24Z phoe: Like, uh, wait. No. 2016-08-10T17:50:38Z phoe: It can hold multiple things. It's more along the line of, it can only access one facility at a time. 2016-08-10T17:50:54Z jasom: phoe: if your only means of sharing data is sending things across queues, then you will have much less buggy code. 2016-08-10T17:51:21Z phoe: jasom: well, I have connections, I have an event queue and I have a datastore. 2016-08-10T17:51:25Z jasom: you need to consider data "gone forever" once you send it on a queue though, if the data is mutable. 2016-08-10T17:52:05Z jasom: phoe: the datastore itself needs to be threadsafe (e.g. a database) or you should have only one thread directly accessing the datastore. Mutable data retrieved from the datastore should be copied before leaving it. 2016-08-10T17:52:11Z phoe: no no, the data is not mutable. 2016-08-10T17:52:36Z jasom: oh, so you can't say "create object A with data B" then later say "append data C to the data in object A"? 2016-08-10T17:52:52Z phoe: I mean - wait. 2016-08-10T17:52:57Z phoe: The messages on the queue are not mutable. 2016-08-10T17:53:01Z jasom: right 2016-08-10T17:53:02Z phoe: The data itself is. 2016-08-10T17:53:10Z phoe: The data in the datastore. 2016-08-10T17:53:27Z sellout- quit (Quit: Leaving.) 2016-08-10T17:53:41Z phoe: Like, I want anything to be able to grab the datastore lock and read stuff. 2016-08-10T17:53:43Z jasom: so copy the data before sending it back from the datastore thread to the connection thread. 2016-08-10T17:53:59Z phoe: But then I want mutation requests to be sent to the thread that grabs the lock and mutates it. 2016-08-10T17:54:07Z fourier joined #lisp 2016-08-10T17:54:21Z phoe: jasom: I actually serialize it into a sexp that contains only symbols, numbers, strings and lists. 2016-08-10T17:54:25Z Yuuhi quit (Remote host closed the connection) 2016-08-10T17:54:28Z phoe: All of which are immutable for me. 2016-08-10T17:54:54Z phoe: And this gets sent through a connection. 2016-08-10T17:54:56Z jasom: phoe: the other option is to make the datastore immutable (i.e. when you modify object A, you actually create a new object A with the updated data) 2016-08-10T17:55:09Z phoe: jasom: I'll actually think about it. 2016-08-10T17:55:21Z jasom: if the datastore is immutable then you can have safe concurrent reads with a single writer 2016-08-10T17:56:00Z jasom: this is not the only way to achieve safe concurrent reads with a single writer, but it's one of the easiest. 2016-08-10T17:56:17Z jasom: and make sure you use a thread-safe hash-table (I think that's not the default in sbcl). 2016-08-10T17:56:57Z phoe: thread-safe hash-table? What do you mean? 2016-08-10T17:57:09Z phoe: Like, placing a lock over GETHASH? 2016-08-10T17:57:14Z Bike: that there's a writer lock. :synchronized t on sbcl 2016-08-10T17:57:47Z Bike: "results are undefined if a thread writes to the hash-table concurrently with another reader or writer", says the docstring 2016-08-10T17:58:23Z phoe: Can I just wrap GETHASH and SETF GETHASH in WITH-LOCK-HELD? 2016-08-10T17:58:27Z DeadTrickster quit (Ping timeout: 276 seconds) 2016-08-10T17:59:46Z jerme quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client) 2016-08-10T17:59:47Z jasom: phoe: yes 2016-08-10T18:02:29Z attila_lendvai quit (Ping timeout: 260 seconds) 2016-08-10T18:02:32Z atgreen joined #lisp 2016-08-10T18:03:00Z holly2 quit (Ping timeout: 276 seconds) 2016-08-10T18:03:10Z phoe: Very good. 2016-08-10T18:03:26Z phoe: And perhaps more portable, to the level of BT-portability. 2016-08-10T18:04:07Z jasom: phoe: I think lparallel has thread-safe hash tables in its kernel 2016-08-10T18:04:38Z Bike: i'm mildly surprised bt doesn't portablize em 2016-08-10T18:04:42Z fourier: there should be portable CLOS wrapper around different implementations of hash tables - for instance IIRC LW make-hash-table creates a thread-safe version by default (in contrast to SBCL) 2016-08-10T18:04:53Z Bike: clos? 2016-08-10T18:04:59Z sellout- joined #lisp 2016-08-10T18:05:18Z phoe: Bike: should it be a BT functionality to make a synchro-hash-table? 2016-08-10T18:05:19Z jasom: fourier: probably non-clos for performance 2016-08-10T18:06:05Z fourier: hm maybe yes, but is clos really a performance problematic still ? 2016-08-10T18:06:17Z Bike: no just... why would clos be involved 2016-08-10T18:06:40Z Bike: it's like (make-hash-table ... #+sbcl :synchronized #+sbcl t #+lw :unsynchronized #+lw nil) or something 2016-08-10T18:07:37Z fourier: just to add more functionality, some stuff from alexandria etc to one place 2016-08-10T18:07:46Z Bike: i actually don't see anything about synchronization in the lw docs 2016-08-10T18:07:51Z Bike: alexandria for one function? 2016-08-10T18:08:33Z fourier: Bike: I meant not only for this, but more functions working on hash tables, just to have all in one library 2016-08-10T18:08:39Z phoe: I was actually thinking whether the PEEK-CHAR-NO-HANG I just thought of should be uploaded somewhere, since it does look like a function someone else would like to find 2016-08-10T18:09:30Z Bike: http://www.lispworks.com/documentation/lw60/LW/html/lw-813.htm#pgfId-1404928 oh, there it is, there's no creation flag. 2016-08-10T18:09:43Z holly2 joined #lisp 2016-08-10T18:09:53Z ZombieChicken joined #lisp 2016-08-10T18:10:20Z jasom: fourier: again why do functions working on hash tables have to use clos? 2016-08-10T18:11:11Z kobain joined #lisp 2016-08-10T18:11:29Z Bike: what would you have, like, hash-table-alist from alexandria, with-locked-table i guess, weakness from trivial-garbage 2016-08-10T18:11:52Z fourier: jasom: probably to provide a way to to extend with different implementations of hash tables 2016-08-10T18:11:54Z phoe: Bike: http://www.lispworks.com/documentation/lw60/LW/html/lw-608.htm#47359 2016-08-10T18:11:59Z phoe: single-thread 2016-08-10T18:12:30Z Bike: dammit. 2016-08-10T18:12:44Z phoe: so it's thread-safe by default. 2016-08-10T18:12:59Z edgar-rft joined #lisp 2016-08-10T18:16:21Z eivarv quit (Quit: Sleep) 2016-08-10T18:17:46Z defaultxr joined #lisp 2016-08-10T18:18:14Z mathi_aihtam quit (Quit: mathi_aihtam) 2016-08-10T18:21:36Z mathi_aihtam joined #lisp 2016-08-10T18:24:02Z sjl joined #lisp 2016-08-10T18:24:40Z knicklux joined #lisp 2016-08-10T18:24:49Z phoe: Basically - I have five places where a worker thread can look for something to be done. 2016-08-10T18:25:39Z phoe: How should I organize this? 2016-08-10T18:26:11Z phoe: Would the simplest workflow be simply (OR (A) (B) (C) (D) (E))? 2016-08-10T18:26:39Z phoe: Where A acquires the lock, checks whether there is anything to be done, does if there is, and releases the lock? 2016-08-10T18:27:04Z phoe: B, C, D, E do the same? 2016-08-10T18:27:27Z prole joined #lisp 2016-08-10T18:28:05Z bocaneri quit (Remote host closed the connection) 2016-08-10T18:28:58Z dlowe: The simplest is to have a queue from which work can be taken 2016-08-10T18:30:00Z dlowe: and you pull the top thing off the queue (with a mutex) and dispatch on the thing 2016-08-10T18:30:02Z phoe: Yes. How do I update the queue? 2016-08-10T18:30:29Z phoe: Because I already have a queue, it's one of these five places. 2016-08-10T18:30:45Z Bike: why don't you have the other four places put their work on the queue 2016-08-10T18:30:56Z phoe: That would require four threads on these four places. 2016-08-10T18:31:01Z phoe: Like, four more threads. 2016-08-10T18:32:10Z phoe: To make the other four places put their work on the queue *on their own*. 2016-08-10T18:32:38Z knicklux quit (Remote host closed the connection) 2016-08-10T18:33:52Z phoe: Unless I actually design this in a completely different way and specialize all the threads even further. 2016-08-10T18:34:37Z jasom: phoe: 4 threads is fine 2016-08-10T18:34:57Z jasom: phoe: 1 thread per connection is the issue. a dozen threads is not a problem. 2016-08-10T18:35:13Z phoe: I see. 2016-08-10T18:38:30Z fitzsim joined #lisp 2016-08-10T18:40:52Z jasom: honestly 1 thread per connection is fine for small to moderate servers; it's not always easy to convert though so it makes sense to design with a worker-thread pattern up front. 2016-08-10T18:41:33Z phoe: jasom: that's my idea. 2016-08-10T18:41:56Z jasom: I used the worker thread pattern here as it's not much extra work. I need to change how mongrel2 distributes work though which will require changing the server: https://github.com/jasom/clack-handler-mongrel2 2016-08-10T18:43:33Z phoe: (defun do-nothing ()) 2016-08-10T18:43:35Z phoe: I love this one <3 2016-08-10T18:44:27Z jasom: that lets you e.g. establish a database connection that persists for the lifetime of the worker thread 2016-08-10T18:44:44Z BusFactor1 quit (Quit: My Mac has gone to sleep. ZZZzzz…) 2016-08-10T18:44:48Z jasom: I ran out of ports when testing my first app using it under high load, so I made that change. 2016-08-10T18:45:04Z eivarv joined #lisp 2016-08-10T18:45:09Z phoe: Mhmm. 2016-08-10T18:45:52Z jasom: I could have made it default to nil and done (and worker-entry (funcall worker-entry)) but defaulting to #'do-nothing made for cleaner code IMO. 2016-08-10T18:46:09Z phoe: jasom: do I need to make a separate thread for the datastore if I wrap every single call in a lock? 2016-08-10T18:46:23Z jasom: phoe: a single global lock for the entire datastore? 2016-08-10T18:46:26Z phoe: jasom: yes. 2016-08-10T18:46:32Z jasom: nope 2016-08-10T18:46:35Z jasom: that will also serialize it 2016-08-10T18:47:09Z jasom: note that either of those options hurts performance as you contend for the datastore. 2016-08-10T18:47:37Z phoe: jasom: I'll bother about it later, when I need to convert to a database. 2016-08-10T18:47:44Z jasom: and a lock-free queue with a single thread for the datastore may be faster than a global lock. I personally prefer the single-thread approach, but may be in the minority on that one. 2016-08-10T18:48:14Z jasom: ideally you will write something like (get-my-data-from-store ...) and then you can change how that works 2016-08-10T18:48:20Z phoe: jasom: yes, exactly 2016-08-10T18:48:28Z phoe: how would the single-thread approach work? 2016-08-10T18:48:54Z phoe: It's more complicated than a global lock because I need to leave data at the datastore queue, leave it to the datastore thread, and then pick it up from the global queue. 2016-08-10T18:49:05Z jasom: (defun get-my-data-from-store (...) (send-message-to-store-thread ...) (wait-for-response-from-store-thread)) 2016-08-10T18:49:10Z phoe: Or am I thinking it wrong? 2016-08-10T18:49:25Z jasom: the above is the the simple way 2016-08-10T18:49:38Z phoe: And also a more complicated one. 2016-08-10T18:49:54Z phoe: Because I need to store much more information not in the worker thread's local variables, but in the event itself 2016-08-10T18:49:54Z jasom: you could also tie in getting responses from the store with your event loop, which could be good for the database as well. 2016-08-10T18:50:11Z phoe: tie? 2016-08-10T18:50:23Z jasom: rather than doing a blocking wait for the response, have the store signal an event 2016-08-10T18:50:37Z mgodshall joined #lisp 2016-08-10T18:50:43Z jasom: depending on the latency of getting an answer from the store one would be better than the other 2016-08-10T18:51:12Z phoe: the store would be a set of hashtables, so I guess it would be amortized O(1) 2016-08-10T18:51:27Z phoe: like, grabbing input from one of the hashtables from a set 2016-08-10T18:51:29Z jasom: phoe: O(M) where M is the number of threads accessing the store as well. 2016-08-10T18:51:38Z phoe: jasom: oh right. 2016-08-10T18:51:39Z jasom: assuming your underlying lock implementation doesn't suck 2016-08-10T18:51:46Z jasom: anyway I gotta go 2016-08-10T18:51:49Z phoe: thanks! 2016-08-10T18:51:51Z phoe: see you 2016-08-10T18:54:00Z Munksgaard quit (Quit: Leaving.) 2016-08-10T18:57:02Z vlatkoB quit (Remote host closed the connection) 2016-08-10T18:57:42Z NaNDude joined #lisp 2016-08-10T18:57:44Z cromachina quit (Read error: Connection reset by peer) 2016-08-10T19:03:40Z attila_lendvai joined #lisp 2016-08-10T19:03:40Z attila_lendvai quit (Changing host) 2016-08-10T19:03:40Z attila_lendvai joined #lisp 2016-08-10T19:04:59Z devon quit (Ping timeout: 258 seconds) 2016-08-10T19:07:50Z ggole quit 2016-08-10T19:08:30Z oko joined #lisp 2016-08-10T19:08:57Z oko quit (Remote host closed the connection) 2016-08-10T19:10:57Z MoALTz joined #lisp 2016-08-10T19:12:00Z davsebamse joined #lisp 2016-08-10T19:14:48Z knobo` joined #lisp 2016-08-10T19:17:23Z knobo`: Are there any download stats for quicklisp? 2016-08-10T19:17:49Z Xach: knobo`: I have them. 2016-08-10T19:17:59Z Xach needs to automate publishing them periodically 2016-08-10T19:19:59Z knobo`: There are stats for february 2016. If a project is not on the list, does it mean that it was not downloaded? 2016-08-10T19:20:13Z knobo`: ah.. top 100... 2016-08-10T19:20:50Z Xach: right 2016-08-10T19:22:12Z papachan quit (Ping timeout: 244 seconds) 2016-08-10T19:25:55Z knobo`: It would be interesting to see which projects are not used, also. 2016-08-10T19:26:05Z knobo`: For example does anyone use cl-cron 2016-08-10T19:29:15Z fourier quit (Ping timeout: 264 seconds) 2016-08-10T19:30:09Z Xach: knobo`: there may be some completists downloading it 2016-08-10T19:32:51Z knobo`: Right.. I'm thinking that ~460 downloads to reach top 100 is not much either. 2016-08-10T19:33:52Z papachan joined #lisp 2016-08-10T19:34:05Z knobo`: Though I suspect many people use their own fork. 2016-08-10T19:34:22Z knobo`: And not everybody is using quicklisp. 2016-08-10T19:34:42Z knobo`: Though they should ;) 2016-08-10T19:34:54Z mathi_aihtam quit (Quit: mathi_aihtam) 2016-08-10T19:35:11Z phoe: pfffffft 2016-08-10T19:35:19Z phoe: time for a sixth refactor. 2016-08-10T19:35:28Z phoe: I'll get the design *more* right this time. 2016-08-10T19:35:38Z Trystam is now known as Tristam 2016-08-10T19:38:28Z wildlander quit (Quit: Saliendo) 2016-08-10T19:43:56Z wildlander joined #lisp 2016-08-10T19:46:19Z shka_ quit (Ping timeout: 260 seconds) 2016-08-10T19:50:54Z blackwolf joined #lisp 2016-08-10T19:51:49Z Lord_Nightmare quit (Quit: ZNC - http://znc.in) 2016-08-10T19:54:03Z papachan quit (Ping timeout: 258 seconds) 2016-08-10T19:55:04Z sampiero quit (Quit: KVIrc 4.2.0 Equilibrium http://www.kvirc.net/) 2016-08-10T19:55:31Z eivarv quit (Quit: Sleep) 2016-08-10T19:58:58Z despoil joined #lisp 2016-08-10T19:59:56Z DeadTrickster joined #lisp 2016-08-10T20:02:32Z mastokley quit (Ping timeout: 240 seconds) 2016-08-10T20:02:53Z John[Lisbeth]: I am using (step (if (oddp 5) 'yes 'no)) as suggested on page 142 of gentle introduction to lisp, but it seems to just => YES 2016-08-10T20:03:04Z Josh2 quit (Remote host closed the connection) 2016-08-10T20:03:41Z dlowe: John[Lisbeth]: you may be a victim of optimization :) 2016-08-10T20:03:51Z John[Lisbeth]: oh no 2016-08-10T20:03:52Z dlowe: the compiler can prove that (oddp 5) is always T 2016-08-10T20:04:10Z Josh2 joined #lisp 2016-08-10T20:04:11Z John[Lisbeth]: can I disable this "optomization"> 2016-08-10T20:04:20Z dlowe: and it can prove that (if T 'yes 'no) is always YES 2016-08-10T20:04:42Z John[Lisbeth]: golly 2016-08-10T20:04:50Z dlowe: maybe? try (declaim '(optimize (speed 0) (debug 3))) 2016-08-10T20:05:14Z John[Lisbeth]: Is that permanant? 2016-08-10T20:06:10Z Bike: no quote there 2016-08-10T20:06:31Z John[Lisbeth]: works now but produced NIL 2016-08-10T20:06:43Z Bike: what 2016-08-10T20:06:52Z John[Lisbeth]: u herd me 2016-08-10T20:06:55Z Bike: do you mean declaim returned nil? 2016-08-10T20:06:58Z burtons joined #lisp 2016-08-10T20:07:02Z John[Lisbeth]: ya 2016-08-10T20:07:14Z John[Lisbeth]: do I win something? 2016-08-10T20:07:22Z knobo`: interesting missunderstanding. 2016-08-10T20:07:42Z scottj joined #lisp 2016-08-10T20:07:46Z Bike: no. what declaim returns doesn't matter. 2016-08-10T20:07:48Z knobo`: dlowe: you have to realize that he is reading a gentle introduction to lisp 2016-08-10T20:07:59Z Bike: you were supposed to do the declaim and then try the step again. 2016-08-10T20:08:07Z John[Lisbeth]: I did tho 2016-08-10T20:08:11Z rumbler31 joined #lisp 2016-08-10T20:08:13Z Bike: and, how'd it go? 2016-08-10T20:08:17Z John[Lisbeth]: it => YES again 2016-08-10T20:08:21Z dlowe shrugs. 2016-08-10T20:08:57Z Bike: okay, so that would have been more helpful to say than "produced NIL", for future reference. 2016-08-10T20:09:14Z John[Lisbeth]: I produce apologies 2016-08-10T20:11:20Z Bike: ok, well, i can't make sbcl step that closely. you might want to get pjb's stepper package. 2016-08-10T20:11:24Z wccoder quit (Remote host closed the connection) 2016-08-10T20:11:32Z Lord_Nightmare joined #lisp 2016-08-10T20:11:40Z Bike: oh, of course i just assumed you were using sbcl, you might be using something else? 2016-08-10T20:11:54Z John[Lisbeth]: I've got slime. I think it uses sbcl 2016-08-10T20:12:10Z John[Lisbeth]: Can I check the version of my compiler or something? 2016-08-10T20:12:20Z Bike: (lisp-implementation-type) 2016-08-10T20:12:33Z John[Lisbeth]: "SBCL" 2016-08-10T20:12:39Z Bike: there you go then 2016-08-10T20:13:00Z Bike: slime is an ide, it can work with most lisp implementations and doesn't come with one. just another note 2016-08-10T20:13:11Z John[Lisbeth]: tru 2016-08-10T20:13:42Z Bike: i don't know how sbcl's stepper works, but i don't think it's high priority for the devs. try pjb's stepper (ql:quickload :com.informatimago.common-lisp.lisp.stepper) 2016-08-10T20:14:22Z John[Lisbeth]: as long as I don't need it to learn gentle, I can wait till I learn how to install lisp packages I think 2016-08-10T20:14:32Z Bike: ok. 2016-08-10T20:16:00Z wccoder joined #lisp 2016-08-10T20:17:12Z eivarv joined #lisp 2016-08-10T20:17:37Z dim: just wanted to say it again: CL is wonderful. awesome. I just did again in a couple hours what I'm not sure I would have though “possible” (given time constraints and all) in another environment 2016-08-10T20:19:44Z knobo`: dim: so you probably know lisp better then other languages, then? 2016-08-10T20:20:01Z dim: I guess it's becoming more and more true yeah 2016-08-10T20:20:14Z dim: I'd say CL and SQL are my strong suits nowadays 2016-08-10T20:20:37Z knobo`: I would not know how to do anything in any other language right now. Except javascript. 2016-08-10T20:21:21Z fourier joined #lisp 2016-08-10T20:22:25Z prole: I have a dream. A dream when the conkeror web browser is rewritten in common lisp 2016-08-10T20:23:03Z dim: https://common-lisp.net/project/closure/ 2016-08-10T20:23:52Z asc232 joined #lisp 2016-08-10T20:23:55Z zacharias joined #lisp 2016-08-10T20:25:26Z sellout- quit (Quit: Leaving.) 2016-08-10T20:25:39Z fitzsim: prole: yeah, that would be great 2016-08-10T20:26:13Z fitzsim: prole: except this dream browser should grab all keyboard events before JavaScript is allowed to override remap keys in "clever" ways 2016-08-10T20:26:33Z fitzsim: override/remap 2016-08-10T20:27:09Z phoe: wow 2016-08-10T20:27:13Z phoe: modal browser 2016-08-10T20:27:34Z phoe: javascript-keyboard-capture-mode 2016-08-10T20:27:57Z phoe: spacemacs can into space 2016-08-10T20:28:03Z papachan joined #lisp 2016-08-10T20:28:23Z fitzsim: Google just broke Conkeror for me 2016-08-10T20:28:33Z fitzsim: by capturing all keyboard events into their search text field first 2016-08-10T20:28:43Z fitzsim: luckily they left M-x alone... for now 2016-08-10T20:29:42Z scottj: fitzsim: did you change user agent to firefox? I think that causes that (a more featureful version of google that steals keys to load) 2016-08-10T20:29:50Z fourier: prole: I also have a dream to have some popular software written in CL. (haskell has a pandoc for example) 2016-08-10T20:29:50Z m3tti joined #lisp 2016-08-10T20:30:27Z jdz: fourier: there's pgloader :) 2016-08-10T20:30:45Z fourier: jdz: :))) 2016-08-10T20:31:23Z shrdlu68 joined #lisp 2016-08-10T20:31:29Z fourier: seriously though pgloader is a great example of killing tools CL definitely lacks in scale 2016-08-10T20:32:52Z varjag quit (Ping timeout: 264 seconds) 2016-08-10T20:33:54Z papachan quit (Ping timeout: 250 seconds) 2016-08-10T20:38:20Z fitzsim: scottj: yes! that must be it 2016-08-10T20:38:42Z fitzsim: scottj: I changed it to get fullscreen YouTube videos in Conkeror 2016-08-10T20:38:46Z scottj: fitzsim: if it's not join #conkeror and we can help troubleshoot it 2016-08-10T20:39:17Z wccoder quit (Remote host closed the connection) 2016-08-10T20:39:22Z scottj: fitzsim: see user-agent-policy if not familiar with it 2016-08-10T20:39:58Z grimsley joined #lisp 2016-08-10T20:40:03Z fitzsim: scottj: or no, I think I changed the user-agent to trick some internal video service that works fine except for a != GNU/Linux check 2016-08-10T20:40:28Z fitzsim: scottj: on #conkeror now 2016-08-10T20:40:30Z shrdlu68: Hi, what format modifier does one use for field width with integers? 2016-08-10T20:40:46Z phoe: ~D? 2016-08-10T20:40:51Z eivarv quit (Quit: Sleep) 2016-08-10T20:41:34Z shrdlu68: phoe: What if I want 15 to print as 0f? 2016-08-10T20:41:34Z fourier: shrdlu68: (format t "~4,'0d" 99) 2016-08-10T20:42:09Z fourier: shrdlu68: here 4 is a width, 0 is a padding character 2016-08-10T20:42:24Z shrdlu68: fourier: Ah, thanks. 2016-08-10T20:43:20Z Bike: if you want it in hex just use x instead of d. takes those same options fine. 2016-08-10T20:45:52Z papachan joined #lisp 2016-08-10T20:46:00Z shrdlu68: Something else I've been wondering: how does one deal with the C equivalent of uint8_t? Does a "byte" have a define size? 2016-08-10T20:46:18Z phoe: shrdlu68: it's Lisp! Bytes don't have a defined size. 2016-08-10T20:46:31Z phoe: But again - "byte" alone does not necessarily compose a complete type specifier. 2016-08-10T20:46:52Z fourier: shrdlu68: yes you can specify type as '(unsigned-byte 8) meaning 8 bits byte 2016-08-10T20:46:59Z phoe: ^ 2016-08-10T20:47:15Z knobo` quit (Ping timeout: 264 seconds) 2016-08-10T20:47:17Z wccoder joined #lisp 2016-08-10T20:47:32Z phoe: And it's a fairly common type specifier, from the kind of compound type specifiers. 2016-08-10T20:47:36Z phoe: Meaning, more than just a symbol. 2016-08-10T20:48:15Z shrdlu68: TLS uses 24-bit integers 0_o. I've just been wondering how I'd do stuff like this in Lisp. 2016-08-10T20:48:34Z fourier: shrdlu68: typically you create arrays for binary data like this (make-array 10 :element-type '(unsigned-byte 8)). Or you can use deftype to make an 'alias' for this particular type. Some libraries do this. 2016-08-10T20:48:40Z phoe: '(unsigned-byte 24)? 2016-08-10T20:49:12Z phoe: That's the naive approach, but probably will work. 2016-08-10T20:49:40Z shrdlu68: Awesome! Had to do that same thing in C, except I had to manually swap the bytes around from a uint32_t, minding the endianness. 2016-08-10T20:49:54Z Bike: there are important differences between c types and lisp types, mainly in that they are promises to the compiler rather than things with distinct operations 2016-08-10T20:50:32Z Bike: eg, if you add two byte 8s it won't do a modulus for you and you could end up with something that doesn't fit in a byte8 2016-08-10T20:52:09Z phoe: Bike: how does one achieve C-like behaviour in Lisp, then? 2016-08-10T20:52:25Z Bike: do it yourself. (mod (+ x y) 256) 2016-08-10T20:52:39Z phoe: Oh. And the compiler is smart enough to get it? 2016-08-10T20:52:55Z Bike: hopefully! (sbcl is, i imagine ccl is) 2016-08-10T20:53:06Z phoe: We can always DISASSEMBLE. 2016-08-10T20:53:09Z Bike: http://www.sbcl.org/manual/#Modular-arithmetic 2016-08-10T20:53:16Z plertrood joined #lisp 2016-08-10T20:54:40Z jasom: sbcl is only reliably smart enough to generate efficient code with machine-word sized modulos though 2016-08-10T20:54:51Z m00natic joined #lisp 2016-08-10T20:55:08Z fourier: Bike: on other hand if you do something like modular arithmetic in C assuming overflows you are basically looking for troubles as well. you should know your size 2016-08-10T20:55:11Z fourier: s 2016-08-10T20:55:18Z jasom: so (mod (+ x y) #.(expt 2 32)) may be faster on 32-bit than 64-bit 2016-08-10T20:55:48Z pjb joined #lisp 2016-08-10T21:03:58Z barbone joined #lisp 2016-08-10T21:07:41Z plertrood: Hi, I am trying to understand the difference between handler-bind and handler-case. 2016-08-10T21:08:00Z plertrood: According to the hyperspec they are roughly equivalent... 2016-08-10T21:08:47Z plertrood: But I am finding if I call (error ...) within handler-bind where one of my handlers is for simple-error, it drops me into the debugger. 2016-08-10T21:09:10Z plertrood: With handler-case, it doesn't. My handler for simple-error is invoked. 2016-08-10T21:09:22Z wccoder quit (Remote host closed the connection) 2016-08-10T21:09:24Z plertrood: Any ideas what could explain this difference? 2016-08-10T21:10:14Z sjl: plertrood: the conditions chapter in PCL might help you: http://www.gigamonkeys.com/book/beyond-exception-handling-conditions-and-restarts.html 2016-08-10T21:10:38Z mastokley joined #lisp 2016-08-10T21:11:21Z burtons quit (Quit: My Mac has gone to sleep. ZZZzzz…) 2016-08-10T21:11:50Z plertrood: Ok, thanks. Have read many times - but it normally takes even more for this stuff to sink in for me.... 2016-08-10T21:12:56Z sjl: philosophically, handler-case is like try/catch in most other languages 2016-08-10T21:13:54Z Bike: plertrood: handler bind just binds a function that is called for a given error. to actually "handle" the condition, you need to transfer control somehow (like by invoke-restart). handler-case always transfers control. 2016-08-10T21:13:57Z burtons joined #lisp 2016-08-10T21:14:47Z sjl: I try to remember it as "handler-case runs the handling code after unwinding the stack, handler-bind runs the handling code BEFORE unwinding the stack" 2016-08-10T21:15:22Z m3tti quit (Ping timeout: 244 seconds) 2016-08-10T21:15:23Z Bike: probably a simpler way to think about it. maybe add "and handler-bind won't unwind anything, that's your job" 2016-08-10T21:15:30Z sjl: with the 'b' in 'bind' standing for 'before' 2016-08-10T21:16:12Z dwchandler: the 'b' in 'bind' stands for 'berkeley' 2016-08-10T21:16:50Z gingerale quit (Remote host closed the connection) 2016-08-10T21:17:35Z phoe: the 'b' in 'bind' stands for 'back in the old days we were catchin' conditions with our bare teeth cuz all the damn handlers were so expenshive' 2016-08-10T21:17:54Z phoe goes to sleep 2016-08-10T21:18:45Z plertrood: Ah I see. So handler-bind doen't unwind the stack, it just carries on. handler-case does. 2016-08-10T21:18:57Z plertrood: I haven't quite got to working out restarts yet.. 2016-08-10T21:19:04Z Bike: that's fair, they're confusing. 2016-08-10T21:19:52Z sjl: yeah I have to look this up all the time, the names are confusing 2016-08-10T21:19:53Z Bike: what's happening with you, with handler bind, is your error handler gets called, and returns normally, so error looks for another one. it can't find one, so it goes into the debugger. your handler is invoked in both cases, it just doesn't actually handle with -bind 2016-08-10T21:19:54Z plertrood: So I think if you are using restarts, you have to use handler-bind? 2016-08-10T21:19:58Z Bike: yeah 2016-08-10T21:20:22Z rumbler31 quit (Ping timeout: 244 seconds) 2016-08-10T21:20:23Z phoe: unless your only restarts are retry and abort and so on 2016-08-10T21:20:33Z phoe: for very simple cases. 2016-08-10T21:20:47Z Bike: no, you still can't invoke those from a handler-case 2016-08-10T21:21:18Z phoe: oh wait 2016-08-10T21:21:20Z phoe: restart-case 2016-08-10T21:21:29Z phoe: God damn Lisp for inventing such similar and confusing names 2016-08-10T21:21:30Z mastokley quit (Remote host closed the connection) 2016-08-10T21:21:36Z plertrood: :-) 2016-08-10T21:21:43Z phoe goes to sleep again 2016-08-10T21:21:54Z Bike: i don't think i've ever actually seen restart-bind used 2016-08-10T21:22:05Z fkac quit (Ping timeout: 244 seconds) 2016-08-10T21:23:54Z burtons quit (Quit: My Mac has gone to sleep. ZZZzzz…) 2016-08-10T21:24:09Z plertrood: So it looks like handler-case uses 'catch' under the hood to transfer control. 2016-08-10T21:24:20Z plertrood: handler-bind doesn't. 2016-08-10T21:24:50Z mastokley joined #lisp 2016-08-10T21:25:12Z Bike: well, what it uses is implementation business 2016-08-10T21:25:19Z Bike: handler-bind won't transfer control at all 2016-08-10T21:25:23Z plertrood: Ah, ok. 2016-08-10T21:25:30Z plertrood: This is in CCL. 2016-08-10T21:26:33Z plertrood: At least it seems possible to write your own version of handler-case in ansi lisp because of this catch/throw combination. 2016-08-10T21:26:39Z burtons joined #lisp 2016-08-10T21:26:45Z Bike: there's a definition at the bottom of the clhs page 2016-08-10T21:26:47Z Bike: clhs handler-case 2016-08-10T21:26:47Z specbot: http://www.lispworks.com/reference/HyperSpec/Body/m_hand_1.htm 2016-08-10T21:26:59Z Bike: uses a twisty combo of blocks and tagbody. sbcl copies it, i think 2016-08-10T21:28:21Z jasom: either of catch/trhow and handler-bind/signal can be implemented in terms of the other 2016-08-10T21:28:41Z plertrood: Wow that is some gnarley lisp there. 2016-08-10T21:28:59Z phoe quit (Ping timeout: 260 seconds) 2016-08-10T21:29:30Z plertrood: So I can essentially pass a lambda down to a function that contains a goto to the enclosing function and have that lambda invoked deep down in the call stack. 2016-08-10T21:29:40Z Bike: i was going to disagree but then i saw the second expansion uses multiple-value-call, so yeah, no, that's grody 2016-08-10T21:29:47Z jasom: plertrood: correct 2016-08-10T21:29:54Z plertrood: Presumable the stack unwinding is handled properly.. 2016-08-10T21:30:08Z jasom: go must be lexically contained, but the tagbody has dynamic extent 2016-08-10T21:30:15Z Bike: plertrood: tagbody tags have 'dynamic extent' so you can do wacky shit like that yeah. goto in lisp is pretty involved 2016-08-10T21:30:45Z jasom: tagbody tags are lexically scoped but have dynamic extent <-- better wording for what I said 2016-08-10T21:30:46Z plertrood: Thats pretty cool. 2016-08-10T21:31:16Z Bike: tagbody/go is also equipotential with catch/throw and handler-bind/signal like jasom mentioned 2016-08-10T21:31:32Z jasom: http://www.pipeline.com/~hbaker1/MetaCircular.html 2016-08-10T21:31:42Z Bike: now there are some gnarls 2016-08-10T21:32:12Z jasom: The implementation of LABELS using FLET is pretty slick 2016-08-10T21:32:12Z plertrood: equipotential? 2016-08-10T21:32:32Z Bike: just made that up. meaning you can implement any two in terms of the third 2016-08-10T21:32:40Z jasom: plertrood: meaning they have equal power; where power means the ability to describe a certain form of flow control 2016-08-10T21:33:06Z jasom: e.g. if I give you just tagbody/go you can implement catch/throw and vice-versa 2016-08-10T21:33:12Z plertrood: cool word! 2016-08-10T21:33:42Z jasom: You see it a lot in electronics 2016-08-10T21:33:45Z Bike: i mean, what it actually means is that they have the same electrical potential, or gravitational potential, or whatever 2016-08-10T21:33:46Z mastokley quit (Ping timeout: 258 seconds) 2016-08-10T21:34:25Z jasom: it means "same potential" and is usually used in physics 2016-08-10T21:35:27Z plertrood: Thanks, that has been very enlightening. I have some experimentation to do. :-) 2016-08-10T21:35:41Z Bike: don't stick a fork in the outlet 2016-08-10T21:36:34Z burtons quit (Quit: My Mac has gone to sleep. ZZZzzz…) 2016-08-10T21:36:54Z fourier quit (Ping timeout: 244 seconds) 2016-08-10T21:38:26Z FreeBirdLjj joined #lisp 2016-08-10T21:43:07Z FreeBirdLjj quit (Ping timeout: 265 seconds) 2016-08-10T21:47:28Z barbone quit (Quit: KVIrc 4.2.0 Equilibrium http://www.kvirc.net/) 2016-08-10T21:47:43Z shrdlu68 quit (Ping timeout: 250 seconds) 2016-08-10T21:48:27Z jerme joined #lisp 2016-08-10T21:49:35Z shrdlu68 joined #lisp 2016-08-10T21:50:10Z rumbler31 joined #lisp 2016-08-10T21:51:18Z phoe joined #lisp 2016-08-10T21:52:50Z prole quit (Remote host closed the connection) 2016-08-10T21:54:09Z milanj quit (Quit: Leaving) 2016-08-10T21:57:57Z burtons joined #lisp 2016-08-10T21:59:05Z burtons quit (Max SendQ exceeded) 2016-08-10T21:59:41Z burtons joined #lisp 2016-08-10T22:00:48Z burtons quit (Max SendQ exceeded) 2016-08-10T22:01:27Z burtons joined #lisp 2016-08-10T22:01:37Z Josh2 quit (Remote host closed the connection) 2016-08-10T22:01:53Z Josh2 joined #lisp 2016-08-10T22:05:09Z plertrood quit (Ping timeout: 260 seconds) 2016-08-10T22:06:33Z atgreen quit (Ping timeout: 240 seconds) 2016-08-10T22:07:05Z adolf_stalin quit (Quit: Leaving...) 2016-08-10T22:11:07Z strelox quit (Ping timeout: 250 seconds) 2016-08-10T22:13:18Z wildlander quit (Quit: Saliendo) 2016-08-10T22:13:32Z barbone joined #lisp 2016-08-10T22:15:51Z LiamH quit (Quit: Leaving.) 2016-08-10T22:16:11Z papachan quit (Ping timeout: 250 seconds) 2016-08-10T22:17:05Z MoALTz quit (Quit: Leaving) 2016-08-10T22:18:27Z sulky_ quit (Ping timeout: 276 seconds) 2016-08-10T22:18:57Z SumoSudo quit (Ping timeout: 258 seconds) 2016-08-10T22:19:24Z sulky joined #lisp 2016-08-10T22:19:50Z wccoder joined #lisp 2016-08-10T22:20:19Z attila_lendvai quit (Ping timeout: 260 seconds) 2016-08-10T22:23:09Z pjb quit (Quit: good night) 2016-08-10T22:24:22Z wccoder quit (Ping timeout: 258 seconds) 2016-08-10T22:24:32Z burtons_ joined #lisp 2016-08-10T22:26:04Z burtons quit (Ping timeout: 252 seconds) 2016-08-10T22:27:52Z DeadTrickster quit (Ping timeout: 240 seconds) 2016-08-10T22:28:41Z barbone quit (Quit: KVIrc 4.2.0 Equilibrium http://www.kvirc.net/) 2016-08-10T22:32:06Z adolf_stalin joined #lisp 2016-08-10T22:33:26Z angavrilov quit (Remote host closed the connection) 2016-08-10T22:33:35Z fourier joined #lisp 2016-08-10T22:34:48Z jerme quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client) 2016-08-10T22:34:55Z burtons_ quit (Quit: My Mac has gone to sleep. ZZZzzz…) 2016-08-10T22:38:01Z fourier quit (Ping timeout: 244 seconds) 2016-08-10T22:38:47Z kdas__ joined #lisp 2016-08-10T22:39:03Z kushal quit (Ping timeout: 244 seconds) 2016-08-10T22:39:09Z barbone joined #lisp 2016-08-10T22:43:56Z reepca quit (Read error: Connection reset by peer) 2016-08-10T22:46:36Z rumbler31 quit (Ping timeout: 258 seconds) 2016-08-10T22:47:52Z stepnem quit (Ping timeout: 264 seconds) 2016-08-10T22:48:51Z shrdlu68 quit (Ping timeout: 258 seconds) 2016-08-10T22:53:18Z rumbler31 joined #lisp 2016-08-10T23:02:23Z sellout- joined #lisp 2016-08-10T23:05:55Z atgreen joined #lisp 2016-08-10T23:07:12Z BlueRavenGT quit (Ping timeout: 276 seconds) 2016-08-10T23:15:55Z _sjs quit (Quit: leaving) 2016-08-10T23:16:13Z _sjs joined #lisp 2016-08-10T23:16:23Z kiwix joined #lisp 2016-08-10T23:20:30Z quazimodo joined #lisp 2016-08-10T23:20:35Z quazimod1 joined #lisp 2016-08-10T23:27:02Z ovenpasta quit (Ping timeout: 265 seconds) 2016-08-10T23:29:25Z grimsley quit (Quit: Leaving) 2016-08-10T23:31:05Z Kaisyu quit (Quit: ERC (IRC client for Emacs 24.5.1)) 2016-08-10T23:38:06Z mejja joined #lisp 2016-08-10T23:39:58Z FreeBirdLjj joined #lisp 2016-08-10T23:44:49Z FreeBirdLjj quit (Ping timeout: 258 seconds) 2016-08-10T23:47:38Z Kaisyu joined #lisp 2016-08-10T23:51:38Z jerme joined #lisp 2016-08-10T23:54:01Z aries_liuxueyang quit (Ping timeout: 258 seconds) 2016-08-10T23:55:32Z Khisanth quit (Ping timeout: 240 seconds) 2016-08-10T23:59:58Z kiwix quit (Ping timeout: 250 seconds)