Logs on 2023-08-24 (liberachat/#haskell)
| 00:01:16 | → | artem joins (~artem@c-73-103-90-145.hsd1.in.comcast.net) |
| 00:03:52 | × | Unicorn_Princess quits (~Unicorn_P@user/Unicorn-Princess/x-3540542) (Remote host closed the connection) |
| 00:04:00 | × | ulysses4ever quits (~artem@2601:408:c405:84e:f474:e3f8:9806:671) (Ping timeout: 256 seconds) |
| 00:08:13 | × | fweht quits (uid404746@id-404746.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 00:10:52 | × | ph88 quits (~ph88@ip5b403cd4.dynamic.kabel-deutschland.de) (Quit: Leaving) |
| 00:17:34 | × | cyphase_eviltwin quits (~cyphase@user/cyphase) (Ping timeout: 244 seconds) |
| 00:19:10 | × | bratwurst quits (~blaadsfa@2604:3d09:207f:f650:216:3eff:fe5a:a1f8) (Quit: Leaving) |
| 00:22:15 | → | cyphase joins (~cyphase@user/cyphase) |
| 00:29:27 | × | falafel quits (~falafel@216.68.6.51.dyn.plus.net) (Ping timeout: 246 seconds) |
| 00:36:49 | tabemann_ | is now known as tabemann |
| 00:37:10 | × | smalltalkman quits (uid545680@id-545680.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
| 00:45:28 | × | cyphase quits (~cyphase@user/cyphase) (Ping timeout: 244 seconds) |
| 00:46:46 | × | jabuxas quits (~jabuxas@user/jabuxas) (Quit: Leaving.) |
| 00:48:12 | × | mima quits (~mmh@62.216.211.151) (Ping timeout: 248 seconds) |
| 00:50:41 | → | lisbeths joins (uid135845@id-135845.lymington.irccloud.com) |
| 00:51:27 | → | cyphase joins (~cyphase@user/cyphase) |
| 00:53:37 | → | Guest54 joins (~Guest54@d-23-244-128-169.nh.cpe.atlanticbb.net) |
| 00:54:25 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz) |
| 00:54:56 | <Guest54> | everyone is quiet? |
| 00:56:14 | × | Guest54 quits (~Guest54@d-23-244-128-169.nh.cpe.atlanticbb.net) (Client Quit) |
| 00:57:53 | <shapr> | ha, we escaped |
| 01:10:39 | × | albet70 quits (~xxx@2400:8902::f03c:92ff:fe60:98d8) (Remote host closed the connection) |
| 01:15:27 | × | td_ quits (~td@i5387092B.versanet.de) (Ping timeout: 252 seconds) |
| 01:16:47 | → | albet70 joins (~xxx@2400:8902::f03c:92ff:fe60:98d8) |
| 01:17:23 | → | td_ joins (~td@i5387091F.versanet.de) |
| 01:19:43 | × | artem quits (~artem@c-73-103-90-145.hsd1.in.comcast.net) (Read error: Connection reset by peer) |
| 01:19:48 | → | ulysses4ever joins (~artem@c-73-103-90-145.hsd1.in.comcast.net) |
| 01:22:58 | <erisco> | \ |
| 01:23:49 | → | nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net) |
| 01:27:45 | → | machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net) |
| 01:29:09 | × | nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 246 seconds) |
| 01:29:36 | → | razetime joins (~quassel@117.254.37.91) |
| 01:34:04 | × | [itchyjunk] quits (~itchyjunk@user/itchyjunk/x-7353470) (Read error: Connection reset by peer) |
| 01:43:42 | × | razetime quits (~quassel@117.254.37.91) (Ping timeout: 245 seconds) |
| 01:44:17 | → | razetime joins (~quassel@117.254.36.242) |
| 01:50:31 | × | razetime quits (~quassel@117.254.36.242) (Ping timeout: 246 seconds) |
| 01:50:55 | → | razetime joins (~quassel@117.254.37.173) |
| 01:58:22 | × | jmcantrell quits (~weechat@user/jmcantrell) (Quit: WeeChat 4.0.4) |
| 01:58:56 | → | jmcantrell joins (~weechat@user/jmcantrell) |
| 01:59:10 | × | jmcantrell quits (~weechat@user/jmcantrell) (Client Quit) |
| 02:01:24 | → | jmcantrell joins (~weechat@user/jmcantrell) |
| 02:04:16 | → | ryanbooker joins (uid4340@id-4340.hampstead.irccloud.com) |
| 02:04:50 | × | segfaultfizzbuzz quits (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) (Remote host closed the connection) |
| 02:07:42 | × | razetime quits (~quassel@117.254.37.173) (Ping timeout: 252 seconds) |
| 02:08:06 | → | razetime joins (~quassel@117.254.37.189) |
| 02:08:43 | → | artem joins (~artem@c-73-103-90-145.hsd1.in.comcast.net) |
| 02:08:44 | × | ulysses4ever quits (~artem@c-73-103-90-145.hsd1.in.comcast.net) (Read error: Connection reset by peer) |
| 02:10:07 | → | mud joins (~mud@user/kadoban) |
| 02:12:31 | → | hyvoid joins (~hyenavoid@222-0-178-69.static.gci.net) |
| 02:17:24 | → | nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net) |
| 02:25:16 | × | caryhartline quits (~caryhartl@168.182.58.169) (Quit: caryhartline) |
| 02:26:49 | × | Volt_ quits (~Volt_@c-73-47-181-152.hsd1.ma.comcast.net) (Remote host closed the connection) |
| 02:34:16 | × | xff0x quits (~xff0x@2405:6580:b080:900:ac2a:af6b:2973:1b48) (Ping timeout: 246 seconds) |
| 02:37:57 | × | dibblego quits (~dibblego@haskell/developer/dibblego) (Ping timeout: 252 seconds) |
| 02:42:09 | → | dibblego joins (~dibblego@116.255.1.151) |
| 02:42:09 | × | dibblego quits (~dibblego@116.255.1.151) (Changing host) |
| 02:42:09 | → | dibblego joins (~dibblego@haskell/developer/dibblego) |
| 02:46:08 | × | td_ quits (~td@i5387091F.versanet.de) (Ping timeout: 246 seconds) |
| 02:47:59 | → | td_ joins (~td@i53870930.versanet.de) |
| 02:48:56 | × | machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 246 seconds) |
| 02:50:24 | × | FinnElija quits (~finn_elij@user/finn-elija/x-0085643) (Killed (NickServ (Forcing logout FinnElija -> finn_elija))) |
| 02:50:24 | → | finn_elija joins (~finn_elij@user/finn-elija/x-0085643) |
| 02:50:24 | finn_elija | is now known as FinnElija |
| 02:50:46 | → | smalltalkman joins (uid545680@id-545680.hampstead.irccloud.com) |
| 03:03:25 | × | dibblego quits (~dibblego@haskell/developer/dibblego) (Ping timeout: 245 seconds) |
| 03:07:39 | × | ddellacosta quits (~ddellacos@146.70.168.100) (Ping timeout: 252 seconds) |
| 03:08:00 | × | waleee quits (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 245 seconds) |
| 03:08:17 | → | dibblego joins (~dibblego@116-255-1-151.ip4.superloop.au) |
| 03:08:17 | × | dibblego quits (~dibblego@116-255-1-151.ip4.superloop.au) (Changing host) |
| 03:08:17 | → | dibblego joins (~dibblego@haskell/developer/dibblego) |
| 03:10:22 | × | adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection) |
| 03:10:35 | → | ddellacosta joins (~ddellacos@146.70.171.100) |
| 03:10:40 | → | adanwan joins (~adanwan@gateway/tor-sasl/adanwan) |
| 03:11:28 | × | ddellacosta quits (~ddellacos@146.70.171.100) (Client Quit) |
| 03:13:11 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.or.comcast.net) |
| 03:17:56 | → | ddellacosta joins (~ddellacos@146.70.165.10) |
| 03:18:39 | × | nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 252 seconds) |
| 03:22:30 | × | Square2 quits (~Square4@user/square) (Ping timeout: 252 seconds) |
| 03:24:15 | → | xff0x joins (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) |
| 03:36:45 | × | shapr quits (~user@2600:1700:c640:3100:a991:ffa8:c9bc:d5d1) (Ping timeout: 248 seconds) |
| 03:39:01 | × | razetime quits (~quassel@117.254.37.189) (Ping timeout: 260 seconds) |
| 03:46:09 | × | td_ quits (~td@i53870930.versanet.de) (Ping timeout: 252 seconds) |
| 03:48:05 | → | td_ joins (~td@i5387091E.versanet.de) |
| 03:58:23 | → | aforemny_ joins (~aforemny@i59F516DA.versanet.de) |
| 03:58:50 | × | aforemny quits (~aforemny@2001:9e8:6cf2:c700:b41f:8d5e:8e07:ee66) (Ping timeout: 245 seconds) |
| 03:59:56 | × | NewtonTrendy quits (~ubuntu@user/bopqod) (Quit: WeeChat 3.5) |
| 03:59:57 | × | bliminse quits (~bliminse@user/bliminse) (Ping timeout: 245 seconds) |
| 04:00:11 | × | powderhorn quits (~powderhor@207-153-12-54.static.fttp.usinternet.com) (Ping timeout: 246 seconds) |
| 04:08:14 | → | _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) |
| 04:11:20 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 245 seconds) |
| 04:14:00 | × | ryanbooker quits (uid4340@id-4340.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
| 04:20:39 | → | bliminse joins (~bliminse@user/bliminse) |
| 04:23:05 | → | ulysses4ever joins (~artem@c-73-103-90-145.hsd1.in.comcast.net) |
| 04:23:05 | × | artem quits (~artem@c-73-103-90-145.hsd1.in.comcast.net) (Read error: Connection reset by peer) |
| 04:27:33 | → | ell7 joins (~ellie@user/ellie) |
| 04:27:46 | → | _xor1 joins (~xor@ip-50-5-233-250.dynamic.fuse.net) |
| 04:27:53 | → | beaky_ joins (~beaky@2a03:b0c0:0:1010::1e:a001) |
| 04:27:55 | → | lexi-lambda_ joins (sid92601@id-92601.hampstead.irccloud.com) |
| 04:27:58 | → | meooow joins (~meooow@165.232.184.169) |
| 04:28:00 | → | danso_o joins (~danso@user/danso) |
| 04:28:00 | → | T_S___ joins (sid501726@id-501726.uxbridge.irccloud.com) |
| 04:28:06 | → | aristid_ joins (sid1599@id-1599.uxbridge.irccloud.com) |
| 04:28:07 | → | agander_m_ joins (sid407952@id-407952.tinside.irccloud.com) |
| 04:28:11 | → | hamishmack_ joins (sid389057@id-389057.hampstead.irccloud.com) |
| 04:28:22 | → | NemesisD_ joins (sid24071@id-24071.lymington.irccloud.com) |
| 04:28:29 | → | Philonous joins (~Philonous@user/philonous) |
| 04:28:31 | → | codedmart_ joins (codedmart@2600:3c01::f03c:92ff:fefe:8511) |
| 04:29:48 | → | xnbya2 joins (~xnbya@2a01:4f8:c17:cbdd::1) |
| 04:29:49 | → | ladyfriday joins (~robert@what.i.hope.is.not.a.tabernaevagant.es) |
| 04:29:59 | → | piele joins (~piele@tbonesteak.creativeserver.net) |
| 04:30:43 | → | mal1 joins (~mal@ns2.wyrd.be) |
| 04:30:45 | → | stilgart_ joins (~Christoph@chezlefab.net) |
| 04:30:46 | → | maxfan8 joins (~max@2a01:4f8:192:5356::2) |
| 04:30:52 | → | s4msung joins (cDjJALwvGU@user/s4msung) |
| 04:31:00 | → | bah joins (~bah@l1.tel) |
| 04:31:08 | → | eugenrh_ joins (~eugenrh@2a01:4f9:c011:265::1) |
| 04:31:12 | → | int-e_ joins (~noone@int-e.eu) |
| 04:31:14 | → | kosmikus_ joins (~kosmikus@nullzig.kosmikus.org) |
| 04:31:22 | → | kawzeg_ joins (kawzeg@2a01:7e01::f03c:92ff:fee2:ec34) |
| 04:31:31 | → | dyniec_ joins (~dyniec@mail.dybiec.info) |
| 04:34:37 | → | adamCS_ joins (~adamCS@ec2-34-207-160-255.compute-1.amazonaws.com) |
| 04:35:30 | × | eugenrh quits (~eugenrh@2a01:4f9:c011:265::1) (*.net *.split) |
| 04:35:30 | × | shailangsa_ quits (~shailangs@host86-186-196-224.range86-186.btcentralplus.com) (*.net *.split) |
| 04:35:30 | × | _xor quits (~xor@ip-50-5-233-250.dynamic.fuse.net) (*.net *.split) |
| 04:35:30 | × | Raito_Bezarius quits (~Raito@wireguard/tunneler/raito-bezarius) (*.net *.split) |
| 04:35:30 | × | dyniec quits (~dyniec@mail.dybiec.info) (*.net *.split) |
| 04:35:30 | × | stilgart quits (~Christoph@chezlefab.net) (*.net *.split) |
| 04:35:30 | × | maxfan8_ quits (~max@2a01:4f8:192:5356::2) (*.net *.split) |
| 04:35:30 | × | mrmonday quits (~robert@what.i.hope.is.not.a.tabernaevagant.es) (*.net *.split) |
| 04:35:30 | × | kosmikus quits (~kosmikus@nullzig.kosmikus.org) (*.net *.split) |
| 04:35:30 | × | beaky quits (~beaky@2a03:b0c0:0:1010::1e:a001) (*.net *.split) |
| 04:35:30 | × | hamishmack quits (sid389057@id-389057.hampstead.irccloud.com) (*.net *.split) |
| 04:35:30 | × | agander_m quits (sid407952@id-407952.tinside.irccloud.com) (*.net *.split) |
| 04:35:30 | × | lieven quits (~mal@ns2.wyrd.be) (*.net *.split) |
| 04:35:30 | × | kawzeg quits (kawzeg@2a01:7e01::f03c:92ff:fee2:ec34) (*.net *.split) |
| 04:35:30 | × | codedmart quits (codedmart@2600:3c01::f03c:92ff:fefe:8511) (*.net *.split) |
| 04:35:30 | × | lexi-lambda quits (sid92601@id-92601.hampstead.irccloud.com) (*.net *.split) |
| 04:35:30 | × | aristid quits (sid1599@id-1599.uxbridge.irccloud.com) (*.net *.split) |
| 04:35:30 | × | T_S__ quits (sid501726@id-501726.uxbridge.irccloud.com) (*.net *.split) |
| 04:35:30 | × | xnbya quits (~xnbya@2a01:4f8:c17:cbdd::1) (*.net *.split) |
| 04:35:30 | × | Philonous_ quits (~Philonous@user/philonous) (*.net *.split) |
| 04:35:30 | × | meooow_ quits (~meooow@165.232.184.169) (*.net *.split) |
| 04:35:30 | × | piele_ quits (~piele@tbonesteak.creativeserver.net) (*.net *.split) |
| 04:35:30 | × | adamCS quits (~adamCS@ec2-34-207-160-255.compute-1.amazonaws.com) (*.net *.split) |
| 04:35:30 | × | bah_ quits (~bah@l1.tel) (*.net *.split) |
| 04:35:30 | × | sviermsung quits (spxLkMy9HV@user/s4msung) (*.net *.split) |
| 04:35:30 | × | NemesisD quits (sid24071@id-24071.lymington.irccloud.com) (*.net *.split) |
| 04:35:30 | × | int-e quits (~noone@int-e.eu) (*.net *.split) |
| 04:35:30 | × | danso quits (~danso@user/danso) (*.net *.split) |
| 04:35:30 | × | ell quits (~ellie@user/ellie) (*.net *.split) |
| 04:35:30 | _xor1 | is now known as _xor |
| 04:35:30 | adamCS_ | is now known as adamCS |
| 04:35:30 | hamishmack_ | is now known as hamishmack |
| 04:35:31 | aristid_ | is now known as aristid |
| 04:35:31 | lexi-lambda_ | is now known as lexi-lambda |
| 04:35:31 | agander_m_ | is now known as agander_m |
| 04:35:31 | ell7 | is now known as ell |
| 04:35:32 | NemesisD_ | is now known as NemesisD |
| 04:36:10 | × | danso_o quits (~danso@user/danso) (Quit: quittin time) |
| 04:37:06 | × | mud quits (~mud@user/kadoban) (Quit: quit) |
| 04:38:19 | → | danso joins (~danso@user/danso) |
| 04:38:59 | × | jmcantrell quits (~weechat@user/jmcantrell) (Quit: WeeChat 4.0.4) |
| 04:39:48 | × | hueso quits (~root@user/hueso) (Read error: Connection reset by peer) |
| 04:40:17 | → | hueso joins (~root@user/hueso) |
| 04:40:21 | × | lisbeths quits (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 04:43:52 | → | Raito_Bezarius joins (~Raito@wireguard/tunneler/raito-bezarius) |
| 04:44:21 | × | hueso quits (~root@user/hueso) (Read error: Connection reset by peer) |
| 04:44:57 | → | hueso joins (~root@user/hueso) |
| 04:50:57 | → | jmcantrell joins (~weechat@user/jmcantrell) |
| 04:55:03 | × | jmcantrell quits (~weechat@user/jmcantrell) (Client Quit) |
| 04:55:23 | → | jmcantrell joins (~weechat@user/jmcantrell) |
| 04:59:46 | → | razetime joins (~quassel@117.254.36.161) |
| 05:01:07 | → | kjak joins (~kjak@pool-108-28-157-148.washdc.fios.verizon.net) |
| 05:02:14 | × | kjak_ quits (~kjak@pool-108-28-157-148.washdc.fios.verizon.net) (Ping timeout: 246 seconds) |
| 05:04:20 | → | phma_ joins (~phma@host-67-44-208-2.hnremote.net) |
| 05:05:28 | × | jmcantrell quits (~weechat@user/jmcantrell) (Quit: WeeChat 4.0.4) |
| 05:05:46 | → | jmcantrell joins (~weechat@user/jmcantrell) |
| 05:07:53 | × | phma quits (~phma@2001:5b0:210b:c518:a8f7:d156:9d38:8d0d) (Ping timeout: 246 seconds) |
| 05:09:21 | → | michalz joins (~michalz@185.246.207.203) |
| 05:10:26 | → | shailangsa joins (~shailangs@host86-186-196-224.range86-186.btcentralplus.com) |
| 05:10:50 | → | dobblego joins (~dibblego@116.255.1.151) |
| 05:10:50 | × | dobblego quits (~dibblego@116.255.1.151) (Changing host) |
| 05:10:50 | → | dobblego joins (~dibblego@haskell/developer/dibblego) |
| 05:11:08 | × | dibblego quits (~dibblego@haskell/developer/dibblego) (Ping timeout: 256 seconds) |
| 05:11:33 | dobblego | is now known as dibblego |
| 05:12:21 | → | phma joins (~phma@2001:5b0:210b:c518:9fdc:2c1a:1096:608b) |
| 05:14:55 | × | phma_ quits (~phma@host-67-44-208-2.hnremote.net) (Ping timeout: 246 seconds) |
| 05:15:24 | × | razetime quits (~quassel@117.254.36.161) (Ping timeout: 246 seconds) |
| 05:15:34 | → | bgs joins (~bgs@212-85-160-171.dynamic.telemach.net) |
| 05:15:44 | → | nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net) |
| 05:15:58 | → | phma_ joins (~phma@host-67-44-208-12.hnremote.net) |
| 05:16:01 | → | razetime joins (~quassel@117.254.36.19) |
| 05:17:33 | × | jmcantrell quits (~weechat@user/jmcantrell) (Quit: WeeChat 4.0.4) |
| 05:18:46 | × | phma quits (~phma@2001:5b0:210b:c518:9fdc:2c1a:1096:608b) (Ping timeout: 246 seconds) |
| 05:20:12 | × | nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 252 seconds) |
| 05:28:13 | × | razetime quits (~quassel@117.254.36.19) (Ping timeout: 246 seconds) |
| 05:28:42 | → | razetime joins (~quassel@117.254.37.211) |
| 05:31:02 | → | troydm1 joins (~troydm@host-176-37-53-238.b025.la.net.ua) |
| 05:32:35 | × | troydm quits (~troydm@user/troydm) (Ping timeout: 245 seconds) |
| 05:32:54 | × | jbalint quits (~jbalint@2600:6c44:117f:e98a:816a:9488:fb1:7b7) (Ping timeout: 246 seconds) |
| 05:34:36 | × | danso quits (~danso@user/danso) (Quit: quittin time) |
| 05:35:09 | × | _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht) |
| 05:41:42 | → | akegalj joins (~akegalj@78-1-5-135.adsl.net.t-com.hr) |
| 05:45:23 | × | razetime quits (~quassel@117.254.37.211) (Ping timeout: 250 seconds) |
| 05:45:53 | → | razetime joins (~quassel@117.254.36.96) |
| 05:51:56 | × | razetime quits (~quassel@117.254.36.96) (Ping timeout: 256 seconds) |
| 05:52:03 | → | razetime joins (~quassel@117.254.36.71) |
| 05:57:32 | → | jonathan_ joins (~jonathan@193.203.13.99) |
| 05:59:12 | → | briandaed joins (~briandaed@185.234.210.211.r.toneticgroup.pl) |
| 05:59:38 | → | danso joins (~danso@user/danso) |
| 06:00:54 | × | razetime quits (~quassel@117.254.36.71) (Ping timeout: 252 seconds) |
| 06:02:58 | → | razetime joins (~quassel@117.254.37.72) |
| 06:07:43 | × | razetime quits (~quassel@117.254.37.72) (Remote host closed the connection) |
| 06:08:36 | phma_ | is now known as phma |
| 06:15:33 | → | lortabac joins (~lortabac@2a01:e0a:541:b8f0:68c1:b14:aae3:ebd0) |
| 06:15:57 | → | Simikando joins (~Simikando@adsl-dyn1.91-127-51.t-com.sk) |
| 06:16:33 | × | Simikando quits (~Simikando@adsl-dyn1.91-127-51.t-com.sk) (Client Quit) |
| 06:17:15 | → | Simikando joins (~Simikando@91.127.51.1) |
| 06:19:42 | → | mdpete joins (~mdpete@46.143.114.151) |
| 06:19:56 | × | td_ quits (~td@i5387091E.versanet.de) (Ping timeout: 245 seconds) |
| 06:20:44 | → | sm joins (~sm@plaintextaccounting/sm) |
| 06:21:44 | → | td_ joins (~td@i5387091D.versanet.de) |
| 06:22:49 | <mdpete> | hi,I an absolute beginner to beautiful world of programming,I want to learn functional programming,I am reading Common LISP: A Gentle Introduction to Symbolic now,BUT my goal is learn Haskell |
| 06:23:06 | <mdpete> | do you thing it is a good start? |
| 06:23:20 | <mdpete> | I am planning to study scisp soon |
| 06:23:28 | → | acidjnk joins (~acidjnk@p200300d6e7072f45b92e9b7cc4c1bf67.dip0.t-ipconnect.de) |
| 06:27:51 | <Helle> | mdpete: I mean probably, my experience with having people start programming that it is important to pick an achievable goal in terms what to write in the language (or what project to work on) |
| 06:28:01 | <Helle> | learning without a goal in mind gets weird |
| 06:30:40 | <mdpete> | i have just got familiar with working with conditionals ,I love ideas behind them, |
| 06:31:16 | <Helle> | So I mean I would personally go straight to Haskell, but if you do learn something else first, C-LISP is honestly not bad |
| 06:31:16 | <mdpete> | would please introduce me where i can find projects or meaning ful things to do via haskell |
| 06:31:36 | <Helle> | I think most good programmers pick up languages quite readily once they get the general concepts |
| 06:31:56 | <Helle> | yes, my Haskell is a bit messy due to mainly writing other languages, but I still love Haskell, so I don't really care |
| 06:32:43 | <[Leary]> | mdpete: Common Lisp and Haskell are very different; I doubt one will prepare you for the other. |
| 06:33:00 | <Helle> | [Leary]: it won't prepare you, but it will give you the flexibility if you learn both |
| 06:33:24 | <mdpete> | please recommend a learning roadmap |
| 06:33:48 | <mdpete> | i have no university degree |
| 06:34:07 | <mdpete> | just finished highschool |
| 06:34:20 | <Helle> | I have no idea, I am self taught and was part of a group trying to write a "introduction to programming" first year, first course university thing and well, we realised that there is NO single method for people to learn programming (also you where exactly our target group) |
| 06:35:02 | <Helle> | the only consistent thing we found is that the most effective way is to start out having people in small groups solve problems in theory before writing code |
| 06:35:13 | <Helle> | but on your own that is uh, not how it works |
| 06:36:26 | <[Leary]> | @where cis194 |
| 06:36:26 | <lambdabot> | <https://github.com/byorgey/haskell-course>,<https://www.seas.upenn.edu/~cis194/spring13/lectures.html> |
| 06:36:43 | <[Leary]> | mdpete: I learnt mostly by play, but enjoyed and benefited from this course. ^ |
| 06:36:46 | <Helle> | [Leary]: yeah, that is not the worst one |
| 06:36:58 | <Helle> | I've read through that before :) |
| 06:37:36 | <Helle> | but idk, it requires quite some feel for compsci and math concepts already, though not quite for programming |
| 06:38:42 | <Helle> | it is actually genuinely an issue that learning how to program other then "by play" is unsolved |
| 06:39:01 | <mdpete> | are functional programming concepts the same? |
| 06:39:05 | <Helle> | yep |
| 06:39:16 | <Helle> | functional vs imperative is the big split |
| 06:39:38 | <mdpete> | i found more free scheme and clisp learning resources |
| 06:39:38 | <c_wraith> | well, really learning how to program requires spending time developing.... taste, for lack of a better word. |
| 06:39:47 | <c_wraith> | And that's not something you can get through drilling |
| 06:40:07 | <c_wraith> | It *has* to involve some kind of experimentation and feedback loop |
| 06:40:24 | <Helle> | c_wraith: yep, this has been the issue while we where trying to come up with a new course |
| 06:40:31 | <Helle> | where having |
| 06:40:57 | <Helle> | Like my feeling is that you have to treat students like they are in kindergarten in terms of how you let them learn |
| 06:41:10 | <Helle> | which is uh, yeah, weird to do to 18 year olds :) |
| 06:41:17 | → | arahael joins (~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net) |
| 06:42:22 | <[Leary]> | mdpete: IMO, pure vs impure is a much more substantial difference than functional vs imperative, so no. Rather, without purity you don't really have "functional" (in my conception). |
| 06:42:42 | <Helle> | [Leary]: agreed, but for me functional requires the purity as well |
| 06:44:13 | <Helle> | I mean the project I work on right now would be far less useful if not for purity, as it gets us so much performance for "free" |
| 06:45:30 | × | arahael quits (~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net) (Ping timeout: 245 seconds) |
| 06:45:47 | <mdpete> | so learnig a pure functional prgrming language first really is a better strategy? |
| 06:47:59 | × | Simikando quits (~Simikando@91.127.51.1) (Quit: Leaving) |
| 06:49:39 | <drewjose> | mdpete ideally, yes, but if you have limited time and just want to get started with being some sort of programmer, maybe a language that is impure and imperative would serve you better, because those are used more widely. Most of them also have added more "functional" features over the years |
| 06:50:03 | <Helle> | drewjose: in incredibly hackish ways |
| 06:50:22 | <Helle> | mdpete: the problem with learning to program is finding small enough incremental goals that work for you |
| 06:50:46 | <drewjose> | Helle of course, and if you use them in javascript you will be rewarded with awful performance |
| 06:51:03 | <Helle> | drewjose: and in Python you hurt your brain due to syntax and single expression |
| 06:51:51 | <Helle> | My Python ends up way to Lispy |
| 06:52:16 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 06:52:17 | <Helle> | Erlang can be an interesting place, it has the Prolog/Haskell syntax, but also more imperative features |
| 06:52:40 | <mdpete> | fortunately or unfortunately I started to learn functional programming first ,and I believe in finish a thing i have started |
| 06:52:59 | <Helle> | hehe |
| 06:54:05 | <drewjose> | awesome, it's not going to be that hard if you stick with Haskell (though laziness is not that common in other languages). My first functional programming language was scala and that wasn't a great experience |
| 06:54:41 | <drewjose> | If you want to try scheme read sicp |
| 06:54:55 | <akegalj> | would Racket be a good first language? Its a lisp like language with types (at least that's my intuition) |
| 06:55:46 | <drewjose> | Racket isn't statically typed by default |
| 06:55:52 | <drewjose> | You have to use Typed racket |
| 06:56:01 | <Helle> | Scala feels so non-functional, plus the Scala bros oooof |
| 06:56:25 | <Helle> | I'd rather deal with 30 academic Haskell men then 1 Scala bro |
| 06:59:02 | <mdpete> | are haskell resources an absolute beginner friendly? which books or other resources you recommend me ? |
| 06:59:11 | <drewjose> | https://haskellbook.com/ |
| 06:59:32 | <drewjose> | is the most beginner friendly one I've found |
| 06:59:50 | <drewjose> | it's paid, though |
| 07:01:28 | <akegalj> | http://www.learnyouahaskell.com/ is a free book that I think is a good first book. There are ilustrations which help to create intuition around some concepts |
| 07:01:49 | <akegalj> | (some people don't think its a good first book though - but I like it) |
| 07:02:20 | <Helle> | akegalj: mmmmm, idk as a programming from first principles book |
| 07:02:27 | <opqdonut> | https://haskell.mooc.fi/ -- my course is simpler than haskellbook.com, but contains lots of exercises unlike LYAH |
| 07:03:51 | <drewjose> | opqdonut looks great! you made this? |
| 07:04:06 | <opqdonut> | yeah, mostly me |
| 07:05:56 | <akegalj> | yep, looks great |
| 07:06:09 | <mdpete> | i really appreciate it |
| 07:08:21 | <tdammers> | I'm not a fan of LYAH, personally - too many didactic lies for my taste, makes it easy to develop wrong intuitions (like the "monads are boxes" thing, which can be thoroughly unhelpful once you meet Monad instances that don't behave like boxes, or ones where the box analogy simply leads you to the wrong conclusions, like with lists) |
| 07:08:21 | × | L29Ah quits (~L29Ah@wikipedia/L29Ah) (Read error: Connection reset by peer) |
| 07:09:16 | <drewjose> | monads are burritos |
| 07:10:48 | <opqdonut> | yeah I wanted to teach monads "properly", which unfortunately meant that I had to cover a lot of ground before them |
| 07:11:01 | <drewjose> | I don't understand why the lyah site is http-only |
| 07:11:09 | <Helle> | I had to 100% wrap my head around monads my own way |
| 07:11:33 | <Helle> | could NOT follow any of the commonly given guides and even my lecturers went too hard on math for it |
| 07:12:01 | <opqdonut> | yeah just playing around with IO is what made it click for me, originally |
| 07:12:12 | <Helle> | yep |
| 07:12:32 | <Helle> | Funny part is that I now get it better then the main maintainer of the project I tend to work on |
| 07:12:42 | <Helle> | so this is going to be fun to explain |
| 07:13:26 | <Hecate> | playing with Maybe and Either gave me my best intuition for monads |
| 07:13:34 | <Helle> | Hecate: for me it was that mixed with IO |
| 07:13:47 | <Helle> | and then rewriting the same code 5 times to get it to be somewhat reasonable |
| 07:13:59 | × | Sgeo quits (~Sgeo@user/sgeo) (Read error: Connection reset by peer) |
| 07:14:34 | <drewjose> | 🌐 Yet Another Haskell Tutorial |
| 07:14:34 | <drewjose> | users.umiacs.umd.edu |
| 07:14:34 | <drewjose> | › ~hal › docs › daume02yaht.pdf |
| 07:14:34 | <drewjose> | |
| 07:14:43 | <drewjose> | does it pretty well I think |
| 07:14:47 | <drewjose> | sorry for the formatting |
| 07:15:14 | <drewjose> | even though it is dated (it's from 2006!) http://users.umiacs.umd.edu/~hal/docs/daume02yaht.pdf |
| 07:15:14 | <Helle> | So the problem for monads is that there is definitely NOT one method to teach them |
| 07:15:36 | <Helle> | but like probably at least a dozen and you need to find the one that clicks for you, as the concept is just that "weird" |
| 07:16:10 | <lortabac> | I think Prelude should expose 'bindIO' and 'returnIO' so people can do IO without having to learn monads |
| 07:16:44 | <Helle> | probably |
| 07:16:56 | <lortabac> | then once they learn type-classes, they can learn that there is a class that unifies the ideas behind Maybe, Either, IO etc. |
| 07:17:00 | × | bgs quits (~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection) |
| 07:17:05 | <tdammers> | Maybe, Either, IO; and then throw lists into the gears to erase some incorrect assumptions that may have formed |
| 07:17:08 | <opqdonut> | lortabac: yeah I think that's the best approach |
| 07:17:24 | <Helle> | lortabac: that basically resembles what I did to learn myself |
| 07:17:37 | <Helle> | and I have some wrong conceptions atleast remaining, but the code result is reasonable enough |
| 07:18:15 | <lortabac> | in other languages you can do IO very easily, in Haskell you are obliged to learn monads prematurely |
| 07:18:16 | <tdammers> | also, "eightfold path to monad satori" |
| 07:19:06 | <Helle> | lortabac: yeah, that is a definite feeling I had, this is why the way I got into serious Haskell coding was by working on an existing code base, so the monadic stuff was already in place |
| 07:21:29 | <lortabac> | people tend to think that monads are something "special" that gives you some kind of enlightenment, while (except the syntactic sugar) it's just an ordinary type-class |
| 07:21:37 | → | CiaoSen joins (~Jura@2a05:5800:29d:c900:664b:f0ff:fe37:9ef) |
| 07:21:47 | <Helle> | yep, realising that was key |
| 07:21:50 | <lortabac> | the only extraordinary thing about monads is that you have to learn them quickly to do IO |
| 07:22:37 | → | Guest16 joins (~Guest16@ec2-13-232-74-226.ap-south-1.compute.amazonaws.com) |
| 07:22:42 | → | arahael joins (~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net) |
| 07:23:48 | × | Guest16 quits (~Guest16@ec2-13-232-74-226.ap-south-1.compute.amazonaws.com) (Client Quit) |
| 07:23:59 | <drewjose> | but it's weird, when learning java to write hello world we had to type incantations like public static void etc., with whoever teaching asking the students to be patient and that all this magic would be explained in due time. People do not give the same leeway to haskell |
| 07:24:30 | <dsal> | The easiest way to learn monads is to stop trying to learn monads and write some code. |
| 07:25:00 | → | mima joins (~mmh@aftr-62-216-211-62.dynamic.mnet-online.de) |
| 07:25:14 | <dsal> | I had like, three experiences today where I wrote a dumb obvious property test and found a bug in code that I was pretty sure was correct. Property tests are smarter than I am. |
| 07:25:20 | <Helle> | dsal: yes and no, but eeeh |
| 07:27:10 | × | arahael quits (~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net) (Ping timeout: 245 seconds) |
| 07:27:48 | × | hgolden quits (~hgolden@2603:8000:9d00:3ed1:fc05:5499:f77c:fbe5) (Remote host closed the connection) |
| 07:27:56 | → | hgolden_ joins (~hgolden@2603-8000-9d00-3ed1-fc05-5499-f77c-fbe5.res6.spectrum.com) |
| 07:31:35 | → | andrei_n joins (~andrei.n@2a02:a03f:c0bc:8400:384:e4db:8ddb:cd47) |
| 07:32:16 | beaky_ | is now known as beaky |
| 07:37:26 | × | andrei_n quits (~andrei.n@2a02:a03f:c0bc:8400:384:e4db:8ddb:cd47) (Remote host closed the connection) |
| 07:37:46 | → | andrei_n joins (~andrei.n@2a02:a03f:c0bc:8400:384:e4db:8ddb:cd47) |
| 07:39:28 | → | mrmr14 joins (~mrmr@user/mrmr) |
| 07:40:21 | × | mrmr1 quits (~mrmr@user/mrmr) (Ping timeout: 244 seconds) |
| 07:40:22 | mrmr14 | is now known as mrmr1 |
| 07:44:35 | → | gmg joins (~user@user/gehmehgeh) |
| 07:48:42 | × | aforemny_ quits (~aforemny@i59F516DA.versanet.de) (Ping timeout: 252 seconds) |
| 07:51:33 | × | johnw quits (~johnw@69.62.242.138) (Read error: Connection reset by peer) |
| 07:53:56 | → | coot joins (~coot@89-69-206-216.dynamic.chello.pl) |
| 07:54:22 | → | johnw joins (~johnw@69.62.242.138) |
| 07:55:44 | <dminuoso> | lortabac │ the only extraordinary thing about monads is that you have to learn them quickly to do IO |
| 07:55:53 | → | ripspin joins (~chatzilla@1.145.130.147) |
| 07:55:55 | <dminuoso> | I think this is a misconception that largely contributes to the perceived difficulty of Haskell and IO. |
| 07:56:27 | → | aforemny joins (~aforemny@2001:9e8:6ce0:5800:a750:a56:88c2:71f2) |
| 07:56:35 | <dminuoso> | You dont really need to know anything about Monads in order to do IO. You just need to have a basic understanding of typeclasses, and understand how >>= and return at IO behave. |
| 07:57:27 | → | machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net) |
| 07:57:32 | <lortabac> | "You just need to have a basic understanding of typeclasses" -> that's exactly my point, type-classes are conceptually much harder than IO |
| 07:57:55 | <lortabac> | people try to understand monads without knowing type-classes and get confused |
| 07:58:45 | <dminuoso> | Im rather saying that learning IO has little to do with learning what Monad is about, its laws or what it abstracts over. |
| 07:58:47 | <dminuoso> | Consider an analogy: |
| 07:59:22 | <dminuoso> | You dont need to learn Monoid in order to add number, even though addition might (only) be captured by the typeclass called Monoid. Its easier to just tell people "Use <> and dont worry about the name Monoid" |
| 08:00:07 | <lortabac> | I agree with you, but that's not what happens in practice with Monad |
| 08:03:29 | <drewjose> | for what it's worth, I agree with dminuoso that for most people, getting IO done by example would be better than delving into how exactly category theory makes it possible in a pure language |
| 08:03:51 | <dminuoso> | Perhaps we would have been better off a -fsimple kind of mode that loads a special prelude that exposes `thenIO :: IO a -> (a -> IO b) -> IO b` and `pureIO :: a -> IO a`, have `do expressions` be monormophic at IO. |
| 08:04:07 | <dminuoso> | That would completely side step all the monad tutorials entirely. |
| 08:07:53 | <lortabac> | this may already be possible, we can even have do notation with RebindableSyntax |
| 08:08:54 | × | vglfr quits (~vglfr@cli-188-239-201-89.bbn.slav.dn.ua) (Remote host closed the connection) |
| 08:09:06 | × | sm quits (~sm@plaintextaccounting/sm) (Quit: sm) |
| 08:09:16 | → | vglfr joins (~vglfr@cli-188-239-201-89.bbn.slav.dn.ua) |
| 08:10:47 | × | gmg quits (~user@user/gehmehgeh) (Quit: Leaving) |
| 08:12:30 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 08:16:06 | × | mdpete quits (~mdpete@46.143.114.151) (Remote host closed the connection) |
| 08:16:24 | → | mdpete joins (~mdpete@46.143.114.151) |
| 08:16:45 | × | mdpete quits (~mdpete@46.143.114.151) (Remote host closed the connection) |
| 08:17:25 | × | tzh quits (~tzh@c-24-21-73-154.hsd1.or.comcast.net) (Quit: zzz) |
| 08:20:22 | → | Nixkernal joins (~Nixkernal@119.4.193.178.dynamic.wline.res.cust.swisscom.ch) |
| 08:20:32 | → | jbalint joins (~jbalint@2600:6c44:117f:e98a:816a:9488:fb1:7b7) |
| 08:21:35 | × | akegalj quits (~akegalj@78-1-5-135.adsl.net.t-com.hr) (Quit: leaving) |
| 08:22:01 | → | fendor joins (~fendor@2a02:8388:1640:be00:af83:ade1:cd40:fe7a) |
| 08:29:32 | → | mdpete joins (~mdpete@46.143.114.151) |
| 08:29:54 | × | mdpete quits (~mdpete@46.143.114.151) (Remote host closed the connection) |
| 08:33:18 | × | califax quits (~califax@user/califx) (Ping timeout: 246 seconds) |
| 08:34:14 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 08:40:59 | <tomsmeding> | it might even suffice to use QualifiedDo and make some module (imported as "IO") that gives >>= and return clever types that use TypeError to tell the user what they did wrong in a better way than GHC normally does |
| 08:41:22 | <tomsmeding> | avoids having to define a special prelude |
| 08:42:45 | × | econo_ quits (uid147250@id-147250.tinside.irccloud.com) (Quit: Connection closed for inactivity) |
| 08:44:28 | → | Pickchea joins (~private@user/pickchea) |
| 08:57:17 | → | danse-nr3 joins (~francesco@151.35.254.168) |
| 09:01:04 | → | Guest|52 joins (~Guest|52@2.124.159.11) |
| 09:01:39 | × | Guest|52 quits (~Guest|52@2.124.159.11) (Client Quit) |
| 09:03:10 | × | Alex_test quits (~al_test@178.34.150.48) (Quit: ;-) |
| 09:03:22 | × | AlexZenon quits (~alzenon@178.34.150.48) (Quit: ;-) |
| 09:03:34 | × | AlexNoo quits (~AlexNoo@178.34.150.48) (Quit: Leaving) |
| 09:04:45 | → | __monty__ joins (~toonn@user/toonn) |
| 09:08:32 | × | adanwan quits (~adanwan@gateway/tor-sasl/adanwan) (Remote host closed the connection) |
| 09:08:56 | → | adanwan joins (~adanwan@gateway/tor-sasl/adanwan) |
| 09:09:56 | × | ft quits (~ft@p508db658.dip0.t-ipconnect.de) (Quit: leaving) |
| 09:15:36 | → | random-jellyfish joins (~random-je@user/random-jellyfish) |
| 09:17:04 | → | nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net) |
| 09:22:12 | × | nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 252 seconds) |
| 09:24:02 | → | sm joins (~sm@plaintextaccounting/sm) |
| 09:24:22 | → | AlexNoo joins (~AlexNoo@178.34.150.48) |
| 09:24:31 | → | AlexZenon joins (~alzenon@178.34.150.48) |
| 09:26:19 | → | Alex_test joins (~al_test@178.34.150.48) |
| 09:37:34 | → | SegmentationFaul joins (~Segmentat@185.151.84.54) |
| 09:42:38 | → | cfricke joins (~cfricke@user/cfricke) |
| 09:48:26 | × | andrei_n quits (~andrei.n@2a02:a03f:c0bc:8400:384:e4db:8ddb:cd47) (Remote host closed the connection) |
| 09:48:44 | → | andrei_n joins (~andrei.n@2a02:a03f:c0bc:8400:384:e4db:8ddb:cd47) |
| 09:53:21 | → | mc47 joins (~mc47@xmonad/TheMC47) |
| 09:56:44 | × | ripspin quits (~chatzilla@1.145.130.147) (Remote host closed the connection) |
| 09:58:06 | <danse-nr3> | good morning #haskell |
| 09:58:59 | → | jabuxas joins (~jabuxas@user/jabuxas) |
| 09:59:36 | × | jabuxas quits (~jabuxas@user/jabuxas) (Client Quit) |
| 10:00:01 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:4421:6684:8924:105c) (Remote host closed the connection) |
| 10:07:06 | → | Simikando joins (~Simikando@adsl-dyn1.91-127-51.t-com.sk) |
| 10:08:26 | × | andrei_n quits (~andrei.n@2a02:a03f:c0bc:8400:384:e4db:8ddb:cd47) (Remote host closed the connection) |
| 10:08:44 | → | andrei_n joins (~andrei.n@2a02:a03f:c0bc:8400:384:e4db:8ddb:cd47) |
| 10:11:42 | × | xff0x quits (~xff0x@125x103x176x34.ap125.ftth.ucom.ne.jp) (Ping timeout: 252 seconds) |
| 10:14:27 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Ping timeout: 246 seconds) |
| 10:17:56 | × | andrei_n quits (~andrei.n@2a02:a03f:c0bc:8400:384:e4db:8ddb:cd47) (Remote host closed the connection) |
| 10:18:15 | → | andrei_n joins (~andrei.n@2a02:a03f:c0bc:8400:384:e4db:8ddb:cd47) |
| 10:25:26 | × | andrei_n quits (~andrei.n@2a02:a03f:c0bc:8400:384:e4db:8ddb:cd47) (Remote host closed the connection) |
| 10:25:38 | × | Simikando quits (~Simikando@adsl-dyn1.91-127-51.t-com.sk) (Ping timeout: 256 seconds) |
| 10:25:43 | → | andrei_n joins (~andrei.n@2a02:a03f:c0bc:8400:384:e4db:8ddb:cd47) |
| 10:27:48 | → | Inst joins (~liamzy@2601:6c4:4085:6d50::725c) |
| 10:28:26 | × | andrei_n quits (~andrei.n@2a02:a03f:c0bc:8400:384:e4db:8ddb:cd47) (Remote host closed the connection) |
| 10:28:44 | → | andrei_n joins (~andrei.n@2a02:a03f:c0bc:8400:384:e4db:8ddb:cd47) |
| 10:35:56 | × | andrei_n quits (~andrei.n@2a02:a03f:c0bc:8400:384:e4db:8ddb:cd47) (Remote host closed the connection) |
| 10:36:14 | → | andrei_n joins (~andrei.n@2a02:a03f:c0bc:8400:384:e4db:8ddb:cd47) |
| 10:36:29 | → | fweht joins (uid404746@id-404746.lymington.irccloud.com) |
| 10:38:26 | × | andrei_n quits (~andrei.n@2a02:a03f:c0bc:8400:384:e4db:8ddb:cd47) (Remote host closed the connection) |
| 10:38:44 | → | andrei_n joins (~andrei.n@2a02:a03f:c0bc:8400:384:e4db:8ddb:cd47) |
| 10:39:52 | int-e_ | is now known as int-e |
| 10:46:42 | × | SegmentationFaul quits (~Segmentat@185.151.84.54) (Quit: Client closed) |
| 10:46:52 | → | SegmentationFaul joins (~Segmentat@185.151.84.54) |
| 10:50:38 | → | notzmv joins (~zmv@user/notzmv) |
| 10:50:52 | × | CiaoSen quits (~Jura@2a05:5800:29d:c900:664b:f0ff:fe37:9ef) (Ping timeout: 248 seconds) |
| 10:54:14 | → | ripspin joins (~chatzilla@1.145.176.59) |
| 11:00:49 | × | SegmentationFaul quits (~Segmentat@185.151.84.54) (Quit: Client closed) |
| 11:00:54 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:4421:6684:8924:105c) |
| 11:01:01 | → | SegmentationFaul joins (~Segmentat@185.151.84.54) |
| 11:05:16 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:4421:6684:8924:105c) (Ping timeout: 248 seconds) |
| 11:08:48 | <byorgey> | danse-nr3: good morning! |
| 11:11:53 | × | random-jellyfish quits (~random-je@user/random-jellyfish) (Quit: Client closed) |
| 11:14:34 | → | xff0x joins (~xff0x@2405:6580:b080:900:37fd:a033:abd0:1c4f) |
| 11:14:46 | → | random-jellyfish joins (~random-je@user/random-jellyfish) |
| 11:15:17 | × | foul_owl quits (~kerry@185.219.141.164) (Ping timeout: 244 seconds) |
| 11:19:02 | <lortabac> | tomsmeding: good idea |
| 11:24:05 | × | danse-nr3 quits (~francesco@151.35.254.168) (Remote host closed the connection) |
| 11:24:10 | → | Guest60 joins (~Guest60@2a00:1098:2f:2:b8d4:3ab9:d332:f00b) |
| 11:24:28 | → | danse-nr3 joins (~francesco@151.35.254.168) |
| 11:24:37 | × | andrei_n quits (~andrei.n@2a02:a03f:c0bc:8400:384:e4db:8ddb:cd47) (Quit: Leaving) |
| 11:28:49 | <Guest60> | Suppose I have types like this: |
| 11:28:50 | <Guest60> | data T t = A t | B t |
| 11:28:50 | <Guest60> | $(makePrisms ''T) |
| 11:28:51 | <Guest60> | data Y = Y_A | Y_B |
| 11:28:51 | <Guest60> | convert :: T () -> T Y |
| 11:28:52 | <Guest60> | convert (A ()) = A Y_A |
| 11:28:52 | <Guest60> | convert (B ()) = B Y_B |
| 11:28:53 | <Guest60> | Is there a nice way to implement `convert` using optics? Like some way of using `_A .~ Y_A` and `_B .~ Y_B` simultaneously? (Neither can be used on their own) |
| 11:29:22 | → | foul_owl joins (~kerry@157.97.134.164) |
| 11:34:58 | × | sm quits (~sm@plaintextaccounting/sm) (Quit: sm) |
| 11:35:30 | × | cods quits (~fred@82-65-232-44.subs.proxad.net) (Ping timeout: 245 seconds) |
| 11:41:08 | × | Inst quits (~liamzy@2601:6c4:4085:6d50::725c) (Remote host closed the connection) |
| 11:41:15 | → | kupi joins (uid212005@id-212005.hampstead.irccloud.com) |
| 11:41:27 | → | Inst joins (~liamzy@2601:6c4:4085:6d50::ce87) |
| 11:41:36 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 11:44:06 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 11:44:39 | × | danse-nr3 quits (~francesco@151.35.254.168) (Ping timeout: 252 seconds) |
| 11:45:45 | × | random-jellyfish quits (~random-je@user/random-jellyfish) (Quit: Client closed) |
| 11:46:33 | × | ulysses4ever quits (~artem@c-73-103-90-145.hsd1.in.comcast.net) (Read error: Connection reset by peer) |
| 11:46:33 | → | artem joins (~artem@c-73-103-90-145.hsd1.in.comcast.net) |
| 11:47:02 | <ncf> | undefined & outside _A ~. const Y_A & outside _B ~. const Y_B -- or something? |
| 11:55:25 | × | jinsun quits (~jinsun@user/jinsun) (Ping timeout: 248 seconds) |
| 11:59:30 | <ncf> | you could also probably do something clever with Adjunction T ((->) Y) |
| 12:00:11 | → | arahael joins (~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net) |
| 12:01:32 | × | Pickchea quits (~private@user/pickchea) (Quit: Leaving) |
| 12:02:04 | <dminuoso> | Guest60: You can use: _A `adjoin` _B |
| 12:02:38 | <dminuoso> | This will give you a `Traversal' T Y` |
| 12:03:10 | → | idgaen joins (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) |
| 12:03:13 | <dminuoso> | then you need an `unsafeSingular :: Traversal s t a b -> Lens s t a b` that you can trivially cook up yourself |
| 12:03:16 | <dminuoso> | So you can write: |
| 12:03:27 | <dminuoso> | Ah but hold on, that wont help you as much |
| 12:03:38 | <dminuoso> | .Mmm |
| 12:03:44 | <ncf> | you'd need an indexed traversal |
| 12:04:30 | <dminuoso> | Yeah. This is a kind of twisted zip |
| 12:04:52 | <ncf> | :t Data.Functor.Adjunction.duplicateL |
| 12:04:53 | <lambdabot> | Data.Functor.Adjunction.Adjunction f u => f a -> f (f a) |
| 12:05:18 | <ncf> | you could compose this with something that witnesses f () as the representation |
| 12:06:39 | × | arahael quits (~arahael@119-18-1-27.771201.syd.nbn.aussiebb.net) (Ping timeout: 246 seconds) |
| 12:11:26 | × | migas quits (~migas@astra4961.startdedicated.net) (Remote host closed the connection) |
| 12:11:43 | → | migas joins (~migas@astra4961.startdedicated.net) |
| 12:11:59 | <ncf> | heh, duplicateL x is just x <$ x |
| 12:12:01 | → | danse-nr3 joins (~francesco@151.35.254.168) |
| 12:12:41 | <ncf> | doesn't use the adjunction at all |
| 12:13:37 | <dminuoso> | Guest60: Here is a dumb idea, but why not just say: |
| 12:13:38 | <ncf> | i guess every strong functor has a duplicate |
| 12:14:16 | <dminuoso> | (x & _A .~ Y_A) & _B .~ Y_B |
| 12:14:23 | <dminuoso> | That seems... simple. |
| 12:14:54 | <Guest60> | because the first part doesn't typecheck |
| 12:14:56 | <ncf> | does it t- |
| 12:15:10 | <dminuoso> | ohhh |
| 12:15:12 | <dminuoso> | I see why |
| 12:15:42 | <Guest60> | I think you need to convert it to some intermediate form which has two type parameters, one for the A constructor and one for the B constructor |
| 12:15:43 | <dminuoso> | The unsafeSingular route smells so promising. |
| 12:15:59 | <dminuoso> | But it loses information along the way |
| 12:16:00 | <Guest60> | without _A _B maybe? |
| 12:16:24 | <dminuoso> | The interface this looks like is just a simple profunctor. |
| 12:16:25 | <ncf> | then you've reinvented Either |
| 12:16:29 | <ncf> | what are you using this for? |
| 12:16:31 | <dminuoso> | no a bifunctor. |
| 12:16:50 | <dminuoso> | Guest60: I would say, use Bifunctor rather than optics. |
| 12:17:03 | <Guest60> | Oops I guess this is an X-Y problem |
| 12:17:31 | <Guest60> | What I really want is to essentially use the Traversable instance for T, but have the function behave differently in the different constructors |
| 12:18:01 | <Guest60> | So if Y_A = Y_B then traverse (const Y_A) would work |
| 12:18:08 | <dminuoso> | With optics you would have to do the indexed traversable route. |
| 12:18:16 | <dminuoso> | Then using the index you could recover the path |
| 12:18:57 | <dminuoso> | As long as you're constrained to just 2 fields, Bifunctor is a fine solution |
| 12:19:11 | <dminuoso> | Since you can just write `bimap (const Y_A) (const Y_B)` |
| 12:19:20 | <Guest60> | No this is a model, in reality T is an AST type with many branches |
| 12:19:22 | <dminuoso> | But it doesnt elegantly generalize to n fields. |
| 12:19:26 | <dminuoso> | Mmm |
| 12:19:56 | <dminuoso> | Guest60: I have a feeling you would need indexed traversals and some form f generics (Data.Data.Data probably?) |
| 12:20:25 | <Guest60> | I mean a basic pattern-matching implementation works fine if there isn't a neat way to do it |
| 12:20:27 | <dminuoso> | With the indexed traversals you can recover the nths constructor, and with Data.Data.Data you can easily generate values of the nth constructor |
| 12:20:28 | <Guest60> | I just thought there might be |
| 12:24:04 | × | micro quits (~micro@user/micro) (Ping timeout: 256 seconds) |
| 12:25:01 | → | micro joins (~micro@user/micro) |
| 12:29:36 | → | sm joins (~sm@plaintextaccounting/sm) |
| 12:29:44 | → | Square2 joins (~Square4@user/square) |
| 12:32:24 | × | Feuermagier quits (~Feuermagi@user/feuermagier) (Quit: Leaving) |
| 12:39:39 | → | L29Ah joins (~L29Ah@wikipedia/L29Ah) |
| 12:55:47 | → | danse-nr3_ joins (~francesco@151.57.235.234) |
| 12:56:56 | × | dcoutts quits (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) (Remote host closed the connection) |
| 12:57:18 | → | dcoutts joins (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) |
| 12:58:06 | × | danse-nr3 quits (~francesco@151.35.254.168) (Ping timeout: 246 seconds) |
| 13:00:43 | × | Alex_test quits (~al_test@178.34.150.48) (Quit: ;-) |
| 13:01:36 | × | AlexZenon quits (~alzenon@178.34.150.48) (Quit: ;-) |
| 13:01:38 | × | AlexNoo quits (~AlexNoo@178.34.150.48) (Quit: Leaving) |
| 13:16:05 | × | SegmentationFaul quits (~Segmentat@185.151.84.54) (Quit: Client closed) |
| 13:16:16 | × | Guest60 quits (~Guest60@2a00:1098:2f:2:b8d4:3ab9:d332:f00b) (Quit: Client closed) |
| 13:16:19 | → | SegmentationFaul joins (~Segmentat@185.151.84.54) |
| 13:18:48 | → | nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net) |
| 13:20:31 | → | shapr joins (~user@2600:1700:c640:3100:25dc:ef75:520:fb9d) |
| 13:21:52 | → | dh97 joins (~dh97@2405:201:d02b:48da:3de1:8f39:2df3:be9c) |
| 13:21:59 | → | ulysses4ever joins (~artem@2601:408:c405:45bb:f474:e3f8:9806:671) |
| 13:23:00 | → | AlexNoo joins (~AlexNoo@178.34.150.48) |
| 13:24:12 | × | nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 252 seconds) |
| 13:24:22 | → | AlexZenon joins (~alzenon@178.34.150.48) |
| 13:24:42 | × | artem quits (~artem@c-73-103-90-145.hsd1.in.comcast.net) (Ping timeout: 256 seconds) |
| 13:27:38 | × | Inst quits (~liamzy@2601:6c4:4085:6d50::ce87) (Remote host closed the connection) |
| 13:28:12 | × | ripspin quits (~chatzilla@1.145.176.59) (Ping timeout: 246 seconds) |
| 13:28:18 | → | Inst joins (~liamzy@2601:6c4:4085:6d50::725c) |
| 13:29:45 | × | sefidel quits (~sefidel@user/sefidel) (Remote host closed the connection) |
| 13:29:47 | → | ystael joins (~ystael@user/ystael) |
| 13:30:21 | × | dh97 quits (~dh97@2405:201:d02b:48da:3de1:8f39:2df3:be9c) (Read error: Connection reset by peer) |
| 13:30:31 | → | sefidel joins (~sefidel@user/sefidel) |
| 13:30:53 | × | ulysses4ever quits (~artem@2601:408:c405:45bb:f474:e3f8:9806:671) (Ping timeout: 248 seconds) |
| 13:32:23 | → | ulysses4ever joins (~artem@73.145.240.111) |
| 13:33:13 | → | Alex_test joins (~al_test@178.34.150.48) |
| 13:33:48 | × | ulysses4ever quits (~artem@73.145.240.111) (Read error: Connection reset by peer) |
| 13:34:06 | → | ulysses4ever joins (~artem@73.145.240.111) |
| 13:35:37 | → | artem joins (~artem@73.145.240.111) |
| 13:36:01 | × | ulysses4ever quits (~artem@73.145.240.111) (Read error: Connection reset by peer) |
| 13:38:58 | → | cafkafk joins (~cafkafk@fsf/member/cafkafk) |
| 13:41:48 | → | lisbeths joins (uid135845@id-135845.lymington.irccloud.com) |
| 13:44:16 | × | hgolden_ quits (~hgolden@2603-8000-9d00-3ed1-fc05-5499-f77c-fbe5.res6.spectrum.com) (Remote host closed the connection) |
| 13:49:57 | × | jmdaemon quits (~jmdaemon@user/jmdaemon) (Ping timeout: 245 seconds) |
| 13:51:26 | → | Guest60 joins (~Guest60@2a00:1098:2f:2:b8d4:3ab9:d332:f00b) |
| 13:51:43 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 13:52:33 | → | segfaultfizzbuzz joins (~segfaultf@23-93-74-212.fiber.dynamic.sonic.net) |
| 13:53:57 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 13:54:15 | → | kuribas joins (~user@ip-188-118-57-242.reverse.destiny.be) |
| 13:56:35 | → | gatekempt joins (~gatekempt@user/gatekempt) |
| 13:56:36 | × | cafkafk quits (~cafkafk@fsf/member/cafkafk) (Quit: WeeChat 3.6) |
| 14:00:17 | → | mmhat joins (~mmh@p200300f1c7042765ee086bfffe095315.dip0.t-ipconnect.de) |
| 14:00:56 | × | kupi quits (uid212005@id-212005.hampstead.irccloud.com) (Quit: Connection closed for inactivity) |
| 14:03:56 | × | notzmv quits (~zmv@user/notzmv) (Ping timeout: 248 seconds) |
| 14:04:27 | × | mmhat quits (~mmh@p200300f1c7042765ee086bfffe095315.dip0.t-ipconnect.de) (Client Quit) |
| 14:07:15 | → | ulysses4ever joins (~artem@2607:fb91:2fb8:4dc7:f474:e3f8:9806:671) |
| 14:07:52 | × | artem quits (~artem@73.145.240.111) (Ping timeout: 240 seconds) |
| 14:22:06 | × | [Leary] quits (~Leary]@user/Leary/x-0910699) (Ping timeout: 245 seconds) |
| 14:24:19 | × | dcoutts quits (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) (Remote host closed the connection) |
| 14:24:43 | → | dcoutts joins (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) |
| 14:24:52 | → | artem joins (~artem@2601:249:4380:8950:f474:e3f8:9806:671) |
| 14:28:28 | × | ulysses4ever quits (~artem@2607:fb91:2fb8:4dc7:f474:e3f8:9806:671) (Ping timeout: 248 seconds) |
| 14:28:44 | <Inst> | oh wait, i think i realize my mistake |
| 14:28:49 | <Inst> | `seq` doesn't have special rules, right? |
| 14:29:10 | <Inst> | infixr 0 `seq` |
| 14:29:26 | <Inst> | it's actually the operators that get called first in haskell, no? |
| 14:29:51 | <Inst> | i was confused by a section in RWH, going through it for entertainment |
| 14:30:03 | <Inst> | a `seq` b... shouldn't a and b get evaluated first? |
| 14:30:20 | <Inst> | but if it's operators with lowest precedence that act first, then it makes sense |
| 14:35:31 | → | econo_ joins (uid147250@id-147250.tinside.irccloud.com) |
| 14:39:02 | → | tzh joins (~tzh@c-24-21-73-154.hsd1.wa.comcast.net) |
| 14:42:24 | <EvanR> | wat |
| 14:42:51 | <EvanR> | precedence is a parsing thing not acting |
| 14:44:24 | <EvanR> | `seq` acts like any other `name` operator |
| 14:44:35 | <EvanR> | ~~acts~~ parses like |
| 14:45:24 | <drewjose> | Inst what do you mean evaluated first, compared to what? |
| 14:46:02 | <EvanR> | snd (undefined : undefined, 99) |
| 14:46:23 | → | ripspin joins (~chatzilla@1.145.208.15) |
| 14:46:37 | <EvanR> | case undefined : undefined { [] -> "empty"; _:_ -> "full } |
| 14:47:00 | <EvanR> | > case undefined : undefined { [] -> "empty"; _:_ -> "full" } |
| 14:47:01 | <lambdabot> | <hint>:1:30: error: parse error on input ‘[’ |
| 14:47:08 | <EvanR> | > case undefined : undefined of { [] -> "empty"; _:_ -> "full" } |
| 14:47:10 | <lambdabot> | "full" |
| 14:48:40 | <EvanR> | precedence tells you where to put parentheses and parentheses tells you how to group expressions, way before any evaluation happens |
| 14:53:29 | <Guest60> | Your confusion may be related to how operator precedence is taught in schools. Multiplication has higher precedence than addition, so in "3 * 4 + 5" you "do the multiplication first", i.e. pick out the "3 * 4" bit before you look at the addition. So this is telling you the order in which you group things with parentheses, but this is not the same |
| 14:53:29 | <Guest60> | as evaluation order in code (even before you think about laziness and seq, which only muddy the waters). Evaluation order (which is what seq affects) is about when, in time, you compute something |
| 14:54:02 | × | lortabac quits (~lortabac@2a01:e0a:541:b8f0:68c1:b14:aae3:ebd0) (Quit: WeeChat 2.8) |
| 14:56:08 | <EvanR> | they also tell you do "do parentheses first" which is ridiculous in this example 0 * (9999 + 9998 + ... + 1) |
| 14:56:17 | → | bgs joins (~bgs@212-85-160-171.dynamic.telemach.net) |
| 14:56:38 | <dolio> | That's what computers do. :þ |
| 14:57:02 | <EvanR> | RIDICULOUS |
| 14:59:18 | <dolio> | In the case of arithmetic, the parse sort of determines the evaluation, at least if you don't use algebra. |
| 15:00:13 | <dolio> | But it's pretty important to understand the difference. |
| 15:00:39 | <Inst> | wait, brb |
| 15:00:47 | <Inst> | undefined `seq` error "404" |
| 15:02:35 | <Inst> | so `seq` gets evaluated first, not error "404" |
| 15:02:53 | <Guest60> | error "404" never gets evaluated |
| 15:02:59 | <glguy> | It might |
| 15:03:13 | <glguy> | Seq doesn't specify an ordering on its arguments |
| 15:03:13 | <Inst> | the way i was assuming things went, i assumed non-operator expressions get evaluated first |
| 15:03:21 | <Inst> | wait what? |
| 15:03:36 | <glguy> | But in function application the function gets evaluated before it's arguments |
| 15:04:05 | <dolio> | You're still conflating parsing with evaluation. |
| 15:04:11 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:4421:6684:8924:105c) |
| 15:04:44 | <glguy> | Being an operator isn't relevant to evaluation |
| 15:05:14 | <Guest60> | undefined `seq` error "404" is equivalent to seq (undefined) (error "404") |
| 15:05:29 | <Guest60> | in every single way |
| 15:06:04 | × | SegmentationFaul quits (~Segmentat@185.151.84.54) (Quit: Client closed) |
| 15:08:35 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:4421:6684:8924:105c) (Ping timeout: 246 seconds) |
| 15:10:40 | × | acidjnk quits (~acidjnk@p200300d6e7072f45b92e9b7cc4c1bf67.dip0.t-ipconnect.de) (Ping timeout: 256 seconds) |
| 15:15:52 | × | briandaed quits (~briandaed@185.234.210.211.r.toneticgroup.pl) (Remote host closed the connection) |
| 15:17:09 | <Inst> | i don't understand how I can not conflate parsing with evaluation, tbh |
| 15:17:32 | <Inst> | also, undefined `seq` error "404" `seq` error "505" |
| 15:17:40 | <geekosaur> | yet you are doing it |
| 15:18:13 | <geekosaur> | that one invokes special rules, where ghc can determine that all of them throw exceptions and is free to pick one |
| 15:18:13 | × | artem quits (~artem@2601:249:4380:8950:f474:e3f8:9806:671) (Read error: Connection reset by peer) |
| 15:18:17 | <Inst> | *how i can not |
| 15:18:22 | → | ulysses4ever joins (~artem@c-73-103-90-145.hsd1.in.comcast.net) |
| 15:18:57 | <geekosaur> | in a strict language you can determine evaluation from parsing; in a lazy language it's more independent |
| 15:19:15 | <Inst> | still that implies errors if exception throwers exist |
| 15:19:21 | <dolio> | Even in a strict language, parsing is not evaluation. |
| 15:19:39 | <geekosaur> | it's not but it generally guides evaluation |
| 15:19:57 | <Inst> | the term that gets evaluated first is the term with the lowest precedence, no? |
| 15:20:06 | <Inst> | $ gets called first in an expression with $ |
| 15:20:13 | <geekosaur> | no |
| 15:20:18 | <dolio> | No, precedence is about parsing. |
| 15:20:32 | <geekosaur> | if anything it'd be highest precedence, but in any case it does not control evaluation |
| 15:20:41 | <Inst> | foo $ bar is equivalent to ($) foo bar |
| 15:20:41 | <geekosaur> | precedence inserts parentheses |
| 15:20:44 | <Inst> | $ is outermost |
| 15:20:54 | <EvanR> | i < 0 ? crashAndBurn() : 7 // C can parse this and not crash |
| 15:21:08 | <Inst> | foo $ bar + baz; ($) foo (bar + baz) |
| 15:21:27 | → | lbseale joins (~quassel@user/ep1ctetus) |
| 15:21:27 | <EvanR> | it can also evaluate it and not crash sometimes |
| 15:22:25 | <EvanR> | downloadTheGibson() || crashAndBurn() # example from PHP |
| 15:22:48 | <Inst> | for a brief moment i thought the Hackers references were built-ins in C |
| 15:23:15 | <EvanR> | so you see treating every operator like strict + does not work |
| 15:23:49 | <EvanR> | especially in haskell |
| 15:23:57 | × | YuutaW quits (~YuutaW@2404:f4c0:f9c3:502::100:17b7) (Ping timeout: 248 seconds) |
| 15:27:04 | → | YuutaW joins (~YuutaW@mail.yuuta.moe) |
| 15:27:38 | <Inst> | i feel embarrassed because i still don't understand how this works :( |
| 15:27:38 | × | Inst quits (~liamzy@2601:6c4:4085:6d50::725c) (Remote host closed the connection) |
| 15:28:04 | <EvanR> | try evaluating more basic haskell expressions |
| 15:28:19 | → | Inst joins (~liamzy@2601:6c4:4085:6d50::ce87) |
| 15:28:32 | <EvanR> | > const 9 (error "404") |
| 15:28:33 | <lambdabot> | 9 |
| 15:28:41 | <EvanR> | why didn't it crash |
| 15:29:00 | × | Guest60 quits (~Guest60@2a00:1098:2f:2:b8d4:3ab9:d332:f00b) (Quit: Client closed) |
| 15:29:13 | <Inst> | didn't need to evaluate (error "404" |
| 15:29:38 | <EvanR> | > 9 `const` error "404 |
| 15:29:39 | <lambdabot> | <hint>:1:21: error: |
| 15:29:39 | <lambdabot> | lexical error in string/character literal at end of input |
| 15:29:45 | <EvanR> | > 9 `const` (error "404) |
| 15:29:46 | <lambdabot> | <hint>:1:23: error: |
| 15:29:46 | <lambdabot> | lexical error in string/character literal at end of input |
| 15:29:48 | <EvanR> | WHAT |
| 15:30:06 | <EvanR> | Inst, chew on that one regardless |
| 15:30:12 | <Inst> | you forgot the " |
| 15:30:19 | <Inst> | > 9 'const' (error "404") |
| 15:30:21 | <lambdabot> | error: |
| 15:30:21 | <lambdabot> | • Syntax error on 'const' |
| 15:30:21 | <lambdabot> | Perhaps you intended to use TemplateHaskell or TemplateHaskellQuotes |
| 15:30:37 | <Inst> | > 9 `const` (error "404") |
| 15:30:38 | <lambdabot> | 9 |
| 15:30:44 | <EvanR> | you don't need parens |
| 15:30:46 | <Inst> | 9 `const` error "404" |
| 15:30:57 | <EvanR> | anyway, what's the difference |
| 15:31:48 | <Inst> | btw, it's a bit awkward that SPJ named his cat Haskell |
| 15:31:56 | <Inst> | on a second-order level, i think |
| 15:33:17 | <Inst> | "Haskell passed on" |
| 15:34:57 | × | ulysses4ever quits (~artem@c-73-103-90-145.hsd1.in.comcast.net) (Ping timeout: 245 seconds) |
| 15:35:03 | × | geekosaur quits (~geekosaur@xmonad/geekosaur) (Killed (NickServ (GHOST command used by allbery_b))) |
| 15:35:03 | → | allbery_b joins (~geekosaur@xmonad/geekosaur) |
| 15:35:06 | allbery_b | is now known as geekosaur |
| 15:36:03 | × | jonathan_ quits (~jonathan@193.203.13.99) (Quit: Leaving) |
| 15:37:57 | → | ph88 joins (~ph88@91.64.60.212) |
| 15:38:14 | → | ulysses4ever joins (~artem@c-73-103-90-145.hsd1.in.comcast.net) |
| 15:39:13 | <ph88> | i have nanosecond since unix epoc and seconds of timezone offset from UTC. Which function can i use to convert to UTCTime ? |
| 15:39:44 | → | powderhorn joins (~powderhor@207-153-12-54.static.fttp.usinternet.com) |
| 15:40:06 | <EvanR> | you can convert from unix time to UTCTime directly, it doesn't involve a time zone |
| 15:40:49 | <EvanR> | posixSecondsToUTCTime :: POSIXTime -> UTCTime, so first divide by one billion |
| 15:41:06 | <ph88> | and substract seconds of timezone ? |
| 15:41:21 | <EvanR> | there's no timezone, unix time is already in UTC |
| 15:41:56 | <ph88> | i have a integer indicating the timezone seconds from UTC |
| 15:41:57 | <EvanR> | assuming you didn't mess up the unix time somewhere |
| 15:42:07 | <ph88> | https://neo4j.com/docs/bolt/current/bolt/structure-semantics/#structure-legacy-datetime |
| 15:42:26 | <EvanR> | timezones are only for convert to local time from UTC |
| 15:42:42 | <ph88> | ah ok |
| 15:42:45 | <EvanR> | unix time is the same for everyone |
| 15:42:58 | <ph88> | how do i make a POSIXTime from Int ? |
| 15:43:23 | <EvanR> | fromIntegral, but you said it's nanoseconds, so after that conversion divide by a billion |
| 15:43:41 | <ph88> | i will drop the nanoseconds, it's in a second integer anyway |
| 15:43:50 | <ph88> | thanks EvanR |
| 15:43:50 | <EvanR> | ok then just fromIntegral |
| 15:44:07 | <dolio> | Inst: If you're literally talking about evaluating the function value seq, then yes that theoretically happens first. But in reality it probably doesn't because GHC knows what well-defined value that is at compile time. |
| 15:45:45 | <Inst> | i mean it should be able to optimize depending on whether seq's first argument is actually used, first |
| 15:45:53 | <Inst> | it can be optimized away if seq's first argument isn't used |
| 15:45:59 | <dolio> | Like, if you evaluate `1 + 3 * 5`, then (+) gets evaluated first, theoretically, but that evaluation completes almost immediately. |
| 15:46:29 | <Inst> | (+) 1 (3 * 5), outermost evaluation |
| 15:46:39 | → | _ht joins (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) |
| 15:46:52 | <EvanR> | ph88, https://i.imgur.com/7ZucxfP.png take this map |
| 15:48:05 | × | YuutaW quits (~YuutaW@mail.yuuta.moe) (Ping timeout: 258 seconds) |
| 15:49:20 | × | stefan-_ quits (~cri@42dots.de) (Quit: ZNC 1.8.2+deb2build5 - https://znc.in) |
| 15:49:29 | → | YuutaW joins (~YuutaW@mail.yuuta.moe) |
| 15:50:04 | → | stefan-_ joins (~cri@42dots.de) |
| 15:50:33 | <ph88> | thx |
| 15:50:36 | <drewjose> | seq isn't lazy in the first argument so it can't optimise its evaluation away can it |
| 15:50:53 | <dolio> | No, seq is strict in both arguments. |
| 15:51:21 | × | lisbeths quits (uid135845@id-135845.lymington.irccloud.com) (Quit: Connection closed for inactivity) |
| 15:51:56 | <dolio> | drewjose: What I mean is, you're right. |
| 15:52:27 | <drewjose> | yes got that :) haskellers are naturally terse |
| 15:54:46 | → | jinsun joins (~jinsun@user/jinsun) |
| 15:56:26 | <EvanR> | a function "strict in an argument" will bottom if the argument is bottom. Kneejerk conclusion is that it therefore evaluates that argument. Which is probably wrong, but I can just tell whoever thinks that to show the proof and offload the mental burden xD |
| 15:56:32 | <ph88> | what's the difference between LocalTime and ZonedTime ? |
| 15:57:08 | × | Inst quits (~liamzy@2601:6c4:4085:6d50::ce87) (Remote host closed the connection) |
| 15:57:10 | → | dhil joins (~dhil@78.45.150.83.ewm.ftth.as8758.net) |
| 15:57:16 | <EvanR> | a ZonedTime is a LocalTime paired with a TimeZone, so it can be decomposed to a LocalTime or converted to UTCTime |
| 15:57:25 | → | Inst joins (~liamzy@2601:6c4:4085:6d50::1868) |
| 15:58:00 | × | cfricke quits (~cfricke@user/cfricke) (Ping timeout: 246 seconds) |
| 15:58:02 | <EvanR> | it's kind of lame because TimeZone is just an offset and not a TimeZoneSeries which is another package |
| 15:58:38 | × | Inst quits (~liamzy@2601:6c4:4085:6d50::1868) (Remote host closed the connection) |
| 15:59:59 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:4421:6684:8924:105c) |
| 16:00:15 | <EvanR> | LocalTime is like 1997/10/10 11:14:00 taken in isolation and no context |
| 16:00:40 | × | YuutaW quits (~YuutaW@mail.yuuta.moe) (Ping timeout: 246 seconds) |
| 16:01:10 | × | ripspin quits (~chatzilla@1.145.208.15) (Quit: ChatZilla 0.17 [SeaMonkey 2.53.17/20230727221859]) |
| 16:01:23 | <EvanR> | you see that a lot in SQL |
| 16:01:37 | <ph88> | should i use TimeZoneSeries or ZonedTime ?\ |
| 16:01:42 | <EvanR> | for what? |
| 16:03:50 | <ph88> | to keep times with timezones, main datetime data type in my app |
| 16:03:51 | → | YuutaW joins (~YuutaW@mail.yuuta.moe) |
| 16:04:34 | <EvanR> | standard procedure I think is to have a column of LocalTime and a column specifying the "time zone" as a string, the complicated version |
| 16:04:59 | <EvanR> | wait what am I saying no |
| 16:04:59 | × | gentauro quits (~gentauro@user/gentauro) (Read error: Connection reset by peer) |
| 16:05:08 | <EvanR> | you still didn't give enough info |
| 16:05:32 | <EvanR> | the best course of action heavily depends on the application |
| 16:07:34 | <EvanR> | e.g. a web app with a database often has all times in UTC and has timezones per user just for display. But a given application may have specialized requirements, like event planners don't care about the timezone because the event is in a known location. Hours of operation in local time naturally survive daylight savings time, etc |
| 16:07:36 | × | kuribas quits (~user@ip-188-118-57-242.reverse.destiny.be) (Quit: ERC (IRC client for Emacs 27.1)) |
| 16:07:40 | × | ddellacosta quits (~ddellacos@146.70.165.10) (Ping timeout: 248 seconds) |
| 16:09:58 | → | ddellacosta joins (~ddellacos@143.244.47.89) |
| 16:11:03 | → | gentauro joins (~gentauro@user/gentauro) |
| 16:19:21 | → | mvk joins (~mvk@2607:fea8:5c9a:a600::1c6d) |
| 16:21:25 | × | chiselfuse quits (~chiselfus@user/chiselfuse) (Remote host closed the connection) |
| 16:22:08 | → | chiselfuse joins (~chiselfus@user/chiselfuse) |
| 16:29:36 | → | razetime joins (~quassel@117.254.37.99) |
| 16:31:47 | × | riatre quits (~quassel@2001:310:6000:f::5198:1) (Ping timeout: 246 seconds) |
| 16:32:51 | → | riatre joins (~quassel@2001:310:6000:f::5198:1) |
| 16:32:51 | × | machinedgod quits (~machinedg@d198-53-218-113.abhsia.telus.net) (Ping timeout: 252 seconds) |
| 16:39:35 | → | acidjnk joins (~acidjnk@p200300d6e7072f45448198b239e9f563.dip0.t-ipconnect.de) |
| 16:40:33 | × | ulysses4ever quits (~artem@c-73-103-90-145.hsd1.in.comcast.net) (Ping timeout: 252 seconds) |
| 16:42:00 | → | Simikando joins (~Simikando@adsl-dyn1.91-127-51.t-com.sk) |
| 16:48:37 | → | ulysses4ever joins (~artem@c-73-103-90-145.hsd1.in.comcast.net) |
| 16:49:54 | × | danse-nr3_ quits (~francesco@151.57.235.234) (Ping timeout: 252 seconds) |
| 16:50:05 | × | YuutaW quits (~YuutaW@mail.yuuta.moe) (Ping timeout: 245 seconds) |
| 16:51:35 | → | artem joins (~artem@2601:249:4380:8950:f474:e3f8:9806:671) |
| 16:52:30 | × | ulysses4ever quits (~artem@c-73-103-90-145.hsd1.in.comcast.net) (Read error: Connection reset by peer) |
| 16:53:23 | → | YuutaW joins (~YuutaW@mail.yuuta.moe) |
| 16:54:07 | × | razetime quits (~quassel@117.254.37.99) (Ping timeout: 245 seconds) |
| 16:54:47 | → | razetime joins (~quassel@117.254.37.17) |
| 16:56:46 | → | random-jellyfish joins (~random-je@user/random-jellyfish) |
| 16:57:57 | × | jinsun quits (~jinsun@user/jinsun) (Read error: Connection reset by peer) |
| 17:00:24 | → | jmcantrell joins (~weechat@user/jmcantrell) |
| 17:00:31 | × | razetime quits (~quassel@117.254.37.17) (Ping timeout: 246 seconds) |
| 17:01:58 | → | razetime joins (~quassel@117.254.37.190) |
| 17:03:02 | <justsomeguy> | What Haskell language features do I need to know to use this library? https://amazonka.brendanhay.nz/ I'm trying to launch an EC2 instance on AWS, but the examples seem impenetrable right now. |
| 17:07:29 | → | danza joins (~francesco@151.19.255.162) |
| 17:10:15 | × | thegeekinside quits (~thegeekin@189.180.79.225) (Ping timeout: 252 seconds) |
| 17:10:32 | <juri_> | when in doubt, find someone else who used it, and see what they did? |
| 17:10:35 | × | fryguybob quits (~fryguybob@cpe-24-94-50-22.stny.res.rr.com) (Quit: leaving) |
| 17:11:04 | → | thegeekinside joins (~thegeekin@189.128.149.137) |
| 17:12:51 | × | jmcantrell quits (~weechat@user/jmcantrell) (Quit: WeeChat 4.0.4) |
| 17:13:12 | → | jmcantrell joins (~weechat@user/jmcantrell) |
| 17:13:42 | × | pavonia quits (~user@user/siracusa) (Quit: Bye!) |
| 17:14:57 | → | mud joins (~mud@user/kadoban) |
| 17:15:09 | → | fryguybob joins (~fryguybob@cpe-24-94-50-22.stny.res.rr.com) |
| 17:18:39 | <justsomeguy> | All the examples I found were for an older version of the library that used different imports and exposed diffferent functions. There are some examples in the repo, but they all use Conduit, language extensions, lens, monad transformers... |
| 17:19:02 | <justsomeguy> | I don't see a forum, irc channel, or anything like that... |
| 17:20:00 | <justsomeguy> | I suppose I can file a GitHub issue to add some newbie friendly examples. |
| 17:20:34 | → | nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net) |
| 17:21:21 | → | razetime_ joins (~quassel@117.254.37.38) |
| 17:21:37 | × | razetime quits (~quassel@117.254.37.190) (Ping timeout: 258 seconds) |
| 17:25:13 | × | jmcantrell quits (~weechat@user/jmcantrell) (Quit: WeeChat 4.0.4) |
| 17:25:56 | → | jmcantrell joins (~weechat@user/jmcantrell) |
| 17:26:12 | × | nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 252 seconds) |
| 17:27:06 | × | razetime_ quits (~quassel@117.254.37.38) (Ping timeout: 245 seconds) |
| 17:30:01 | → | razetime joins (~quassel@117.254.36.88) |
| 17:32:04 | × | oo_miguel quits (~Thunderbi@78-11-179-96.static.ip.netia.com.pl) (Quit: oo_miguel) |
| 17:33:44 | → | oo_miguel joins (~Thunderbi@78-11-179-96.static.ip.netia.com.pl) |
| 17:36:04 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 17:36:06 | × | dcoutts quits (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) (Ping timeout: 252 seconds) |
| 17:38:13 | → | ulysses4ever joins (~artem@c-73-103-90-145.hsd1.in.comcast.net) |
| 17:38:13 | × | artem quits (~artem@2601:249:4380:8950:f474:e3f8:9806:671) (Read error: Connection reset by peer) |
| 17:38:34 | → | Lycurgus joins (~juan@user/Lycurgus) |
| 17:40:19 | → | jinsun joins (~jinsun@user/jinsun) |
| 17:42:10 | × | YuutaW quits (~YuutaW@mail.yuuta.moe) (Ping timeout: 246 seconds) |
| 17:42:42 | × | razetime quits (~quassel@117.254.36.88) (Ping timeout: 252 seconds) |
| 17:44:26 | × | jmcantrell quits (~weechat@user/jmcantrell) (Quit: WeeChat 4.0.4) |
| 17:44:46 | → | jmcantrell joins (~weechat@user/jmcantrell) |
| 17:45:33 | → | YuutaW joins (~YuutaW@mail.yuuta.moe) |
| 17:49:13 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 17:51:21 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:4421:6684:8924:105c) (Remote host closed the connection) |
| 17:59:19 | → | CiaoSen joins (~Jura@2a05:5800:29d:c900:664b:f0ff:fe37:9ef) |
| 18:01:57 | × | Square2 quits (~Square4@user/square) (Ping timeout: 252 seconds) |
| 18:05:54 | → | jabuxas joins (~jabuxas@user/jabuxas) |
| 18:08:09 | → | briandaed joins (~briandaed@185.234.210.211.r.toneticgroup.pl) |
| 18:09:16 | × | Simikando quits (~Simikando@adsl-dyn1.91-127-51.t-com.sk) (Quit: Leaving) |
| 18:11:56 | × | Lycurgus quits (~juan@user/Lycurgus) (Quit: Tschüss) |
| 18:22:04 | → | waleee joins (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) |
| 18:22:37 | × | danza quits (~francesco@151.19.255.162) (Read error: Connection reset by peer) |
| 18:22:44 | × | jabuxas quits (~jabuxas@user/jabuxas) (Quit: Leaving.) |
| 18:23:52 | → | danza joins (~francesco@151.37.224.108) |
| 18:27:45 | → | ft joins (~ft@80.141.182.88) |
| 18:31:02 | <dsal> | justsomeguy: Mostly just generic lens. It's pretty eays. |
| 18:31:05 | <dsal> | ez |
| 18:31:25 | <dsal> | I use it for mostly s3 and a bit of sqs and lambda. |
| 18:32:55 | <[exa]> | hey guys just checking, is this a thing with any consequences or was it a onetime scream? https://www.simplehaskell.org/ |
| 18:33:11 | <dsal> | It's not even a thing. |
| 18:33:28 | <dsal> | I was working on a project that thought it was very important, but I couldn't find any two people who could agree on what it meant. |
| 18:34:51 | <dsal> | If you dig into some of the pages, you'll find a few different people who've said what simple things they think are important. And then you do the venn diagram and you end up with regular Haskell. |
| 18:35:06 | <[exa]> | yeah I kinda suspected. |
| 18:36:23 | <dsal> | It ended up being a nightmare. Some of the things the Guy Who Cared demanded were on most of the lists of things to avoid, and some of the things he forbade were on most of the lists of things to use. |
| 18:37:56 | × | justsomeguy quits (~justsomeg@user/justsomeguy) (Ping timeout: 260 seconds) |
| 18:44:14 | <danza> | i saw a mention to that project in a post linked today in haskell weekly, but i found the principles listed in that post as vague as the concept of "simple haskell" |
| 18:46:03 | <danza> | this is the post dev.to/zelenya/do-your-values-align-with-fp-values-48l9, for reference |
| 18:48:12 | <danza> | i have several issues with it, besides writing about values in an handwavy way, but the vagueness relates to what you were chatting about |
| 18:51:50 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:4421:6684:8924:105c) |
| 18:52:46 | × | hyvoid quits (~hyenavoid@222-0-178-69.static.gci.net) (Remote host closed the connection) |
| 18:53:13 | → | hyvoid joins (~hyenavoid@222-0-178-69.static.gci.net) |
| 18:54:20 | → | Pickchea joins (~private@user/pickchea) |
| 18:56:05 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:4421:6684:8924:105c) (Ping timeout: 246 seconds) |
| 18:56:13 | <[exa]> | also lots of "man I wish ghc was simple" vibes.... :] |
| 18:58:16 | → | justsomeguy joins (~justsomeg@user/justsomeguy) |
| 19:04:01 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 19:04:07 | × | jle` quits (~jle`@cpe-23-240-75-236.socal.res.rr.com) (Ping timeout: 245 seconds) |
| 19:06:24 | → | jle` joins (~jle`@cpe-23-240-75-236.socal.res.rr.com) |
| 19:09:25 | → | myxos joins (~myxos@cpe-65-28-251-121.cinci.res.rr.com) |
| 19:09:42 | × | random-jellyfish quits (~random-je@user/random-jellyfish) (Quit: Client closed) |
| 19:10:07 | × | mc47 quits (~mc47@xmonad/TheMC47) (Remote host closed the connection) |
| 19:16:13 | × | azimut quits (~azimut@gateway/tor-sasl/azimut) (Remote host closed the connection) |
| 19:16:30 | → | azimut joins (~azimut@gateway/tor-sasl/azimut) |
| 19:20:00 | × | td_ quits (~td@i5387091D.versanet.de) (Ping timeout: 256 seconds) |
| 19:21:38 | → | td_ joins (~td@i53870920.versanet.de) |
| 19:23:25 | × | justsomeguy quits (~justsomeg@user/justsomeguy) (Quit: WeeChat 3.6) |
| 19:24:01 | × | coot quits (~coot@89-69-206-216.dynamic.chello.pl) (Quit: coot) |
| 19:29:43 | → | caryhartline joins (~caryhartl@168.182.58.169) |
| 19:30:46 | <EvanR> | simple haskell is one of the stages in the evolution of a haskell programmer |
| 19:30:59 | <EvanR> | check that out to see simple haskell |
| 19:32:27 | <geekosaur> | when we're talking about haskell, are we talking about haskell or are we talking about pseudo-idris? |
| 19:39:11 | × | idgaen quits (~idgaen@2a01:e0a:498:fd50:fcc6:bb5d:489a:ce8c) (Quit: WeeChat 4.0.2) |
| 19:46:10 | <monochrom> | Unpopular opinion: Once again programmers forget that the meaning of "simple" is "it depends". |
| 19:48:01 | <EvanR> | "Industrial Haskell users are realizing that the key to delivering software on time and under budget is to keep it simple" wait a minute here. I haven't seen an industrial haskell thing yet that wasn't a monstrous complexity thing |
| 19:48:13 | <EvanR> | so maybe this is aspirational |
| 19:48:19 | <EvanR> | instead of empirical |
| 19:49:11 | <EvanR> | in a haskell job interview I mentioned I like to keep my haskell code simple, I didn't get the job! |
| 19:51:21 | <monochrom> | Have we seen an industrial haskell thing that is over time and/or over budget? :) |
| 19:51:53 | <monochrom> | In fact, how do you define over budget in the first place? |
| 19:53:30 | <monochrom> | The Chicago school of economics correct observe that everyone just complains "your product is overpriced, my product is underpriced" all the time anyway. |
| 19:53:39 | <geekosaur> | s/industrial haskell thing/industrial software thing/ |
| 19:53:44 | <EvanR> | I've never heard of *under* budget. Only costs increase to meet the budget supplied |
| 19:56:09 | <monochrom> | One more unpopular opinion: The key to on time and under budget is to aim for less. If anything needs to be simple, it should be the spec. |
| 19:56:25 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 19:57:23 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 19:57:58 | → | artem joins (~artem@2601:408:c408:6d23:f474:e3f8:9806:671) |
| 19:58:19 | × | ulysses4ever quits (~artem@c-73-103-90-145.hsd1.in.comcast.net) (Read error: Connection reset by peer) |
| 19:58:25 | → | ulysses4ever joins (~artem@c-73-103-90-145.hsd1.in.comcast.net) |
| 20:01:14 | → | tromp joins (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) |
| 20:01:28 | × | powderhorn quits (~powderhor@207-153-12-54.static.fttp.usinternet.com) (Quit: Client closed) |
| 20:01:46 | × | artem quits (~artem@2601:408:c408:6d23:f474:e3f8:9806:671) (Read error: Connection reset by peer) |
| 20:09:44 | → | Guest24 joins (~Guest24@worthwhile.mesher.volia.net) |
| 20:09:49 | → | Guest_Artem joins (~Guest_Art@178.92.98.167) |
| 20:10:17 | Guest_Artem | is now known as Artem |
| 20:11:48 | <ddellacosta> | simple is so contextual, I don't see how anyone can identify some subset of Haskell that qualifies as "Simple" |
| 20:13:01 | × | Nixkernal quits (~Nixkernal@119.4.193.178.dynamic.wline.res.cust.swisscom.ch) (Ping timeout: 260 seconds) |
| 20:13:11 | <dolio> | Seems like marketing. |
| 20:14:06 | <dolio> | 'I read some headlines/reddit comments that Haskell requires PhDs, but this group is keeping it simple.' |
| 20:16:39 | <EvanR> | the K.I.S principle. Coined here and now |
| 20:17:54 | <tomsmeding> | arguably the "stupid" part here would mean that the spec is simple |
| 20:18:15 | <tomsmeding> | after all, what else would it mean for a program to be stupid than that it does just simple things |
| 20:18:34 | <tomsmeding> | (apart from doing the wrong thing, but that's not what this "stupid" refers to) |
| 20:19:59 | × | _ht quits (~Thunderbi@28-52-174-82.ftth.glasoperator.nl) (Quit: _ht) |
| 20:21:33 | <dsal> | We go through so much stuff to avoid using lens. Because doing a lot of stuff is more simple than just using a lib. |
| 20:21:38 | × | briandaed quits (~briandaed@185.234.210.211.r.toneticgroup.pl) (Remote host closed the connection) |
| 20:22:22 | → | bratwurst joins (~blaadsfa@2604:3d09:207f:f650:216:3eff:fe5a:a1f8) |
| 20:23:15 | → | pavonia joins (~user@user/siracusa) |
| 20:23:23 | <tomsmeding> | I mean, when I encounter a particularly jargon- or notation-heavy (for me) piece of maths, I do sometimes expand the notation into simpler concepts first, then try to understand it that way |
| 20:23:27 | <tomsmeding> | this is not always successful |
| 20:24:07 | <tomsmeding> | but if the jargon/notation is halfway decent, getting past the initial hurdle will make the maths more understandable _with_ the notation |
| 20:24:09 | <Artem> | ghci> [x | x<-[0..], x<5] |
| 20:24:10 | <Artem> | |
| 20:24:10 | <Artem> | [0,1,2,3,4Interrupted. |
| 20:24:11 | <Artem> | Are there any languages or extensions for haskell that can perform such reasonings. |
| 20:24:31 | <geekosaur> | not for haskell, haskell is not mathematica |
| 20:25:10 | <geekosaur> | it does not reason about your expressions, and laziness by itself cannot prove that `x<5` will never become `True` again |
| 20:25:11 | <tomsmeding> | Artem: that kind of reasoning _is_ basically a theorem prover |
| 20:25:27 | <tomsmeding> | because what if the "<5" was "satisfies some weird math theorem" |
| 20:25:44 | <dolio> | Like the halting problem. |
| 20:25:45 | <monochrom> | This is why I don't say "expand definition into simpler terms", I say "expand definition into more elementary terms". |
| 20:25:51 | <ncf> | > takeWhile (< 5) [0..] |
| 20:25:52 | <lambdabot> | [0,1,2,3,4] |
| 20:26:02 | → | dcoutts joins (~duncan@cpc69402-oxfd27-2-0-cust903.4-3.cable.virginm.net) |
| 20:26:22 | <monochrom> | Some of the advanced definitions and abstractions are there to simplify things. Elementary is not always simple. |
| 20:26:39 | <tomsmeding> | Artem: hence you will find this kind of reasoning in theorem provers: mathematica can do very specialised reasoning about mostly analysis, but more general provers are e.g. SMT solver like Z3 |
| 20:26:49 | <tomsmeding> | monochrom++ |
| 20:27:36 | <Artem> | got it, thanks |
| 20:28:15 | <tomsmeding> | anyway about the simple/elementary stuff, my point was that not wanting to use lens may be the same desire to reduce to elementary terms to avoid having to learn heavy notation |
| 20:28:28 | <dolio> | Sometimes you have to do the opposite, though. Mathematicians have pre-expanded things into complicated 'elementary' terms because their idea is classically trivial. :) |
| 20:28:32 | <tomsmeding> | but after the learning curve, applications that benefit significantly from lens are probable actually _more_ readable |
| 20:28:33 | <monochrom> | Whenever you see a paper that says "an elementary proof of theorem foo" you know it is going to be a messy, precisely because sticking only to elementary backgrounds and "only the 500 most common English words that are 4 letters each or less" and that sort of things. |
| 20:28:50 | tomsmeding | has never used lens in anger |
| 20:29:08 | × | dhil quits (~dhil@78.45.150.83.ewm.ftth.as8758.net) (Ping timeout: 256 seconds) |
| 20:29:41 | × | Artem quits (~Guest_Art@178.92.98.167) (Quit: Client closed) |
| 20:30:06 | × | bgs quits (~bgs@212-85-160-171.dynamic.telemach.net) (Remote host closed the connection) |
| 20:30:50 | → | Guest_Artem joins (~Guest_Art@167-98-92-178.pool.ukrtel.net) |
| 20:31:03 | <dsal> | tomsmeding: I've got a data structure that contains a list of two different types of items which have ~16 types of subitems each of which contains other type-specific types, though many of these different things have bits in common. I have to do things like add up all of the a.[b].[c].d's which would just be `sumOf (folded b . _Something . folded c . d) a` but that's hard to read, so just write a lot of code instead. |
| 20:31:42 | <tomsmeding> | dsal: I'm not arguing against using lens |
| 20:31:45 | × | Guest24 quits (~Guest24@worthwhile.mesher.volia.net) (Quit: Client closed) |
| 20:31:49 | <dsal> | Nah, I just mean I have a really good use case. :) |
| 20:31:53 | <dsal> | But it's "bad" |
| 20:32:10 | <dsal> | We do use OverloadedRecordDot, which I dislike quite a bit, but am at least putting to _some_ good use in here. |
| 20:32:10 | × | Guest_Artem quits (~Guest_Art@167-98-92-178.pool.ukrtel.net) (Client Quit) |
| 20:32:16 | <geekosaur> | crazy. I mean, I can read that and I am no lens expert |
| 20:32:20 | <tomsmeding> | I'm basically verbosely arguing that people that refuse to use lens are basically just unwilling to learn something with a steeper learning curve :p |
| 20:32:25 | <tomsmeding> | in which case it's weird that they're in haskell |
| 20:32:38 | <tomsmeding> | geekosaur: but can you write it |
| 20:32:41 | <dsal> | They argue that they don't want _other people_ to have to learn to read something new. |
| 20:32:45 | <geekosaur> | maybe |
| 20:32:47 | <dolio> | I've been confused about that kind of thing for a long time. |
| 20:32:55 | → | machinedgod joins (~machinedg@d198-53-218-113.abhsia.telus.net) |
| 20:32:56 | <ddellacosta> | I mean, I think lens is a perfect example of something that can make your code a lot simpler, or a lot more complex, depending on your use-case and how you use it. It's a perfect example of why I don't think you can pin down what "simple Haskell" is |
| 20:33:04 | <dsal> | You can do some really weird things with lens. That's the bad part. |
| 20:33:18 | <ddellacosta> | but I don't fault people for not wanting to learn it either, it's a lot |
| 20:33:38 | <dsal> | I agree up until the part where we work very hard all the time to avoid it. heh |
| 20:33:55 | <ddellacosta> | yeah I mean to be fair there are good reasons for that in general |
| 20:34:16 | <dsal> | HasField is pretty handy for one very small use case, but it's the one I generally don't care all that much about. |
| 20:34:26 | → | jmdaemon joins (~jmdaemon@user/jmdaemon) |
| 20:34:42 | <dolio> | I still structure things using ideas from lens even when not using lens much. Like, write a traversal over something and derive a bunch of other functions from it. |
| 20:35:30 | <dsal> | Yeah, once it seeps into you, you do see how it simplifies a few patterns. |
| 20:35:42 | <dolio> | That's the important part of lens, to me. |
| 20:36:33 | <dolio> | Always write a traversal over something. |
| 20:36:36 | <dsal> | I end up doing stuff like the above by translating my lens code to just manual folds and stuff and it's… not that bad. Just feels unnecessary. |
| 20:36:59 | <dolio> | Otherwise you'll end up writing like 3 other functions that have the same structure eventually. |
| 20:40:27 | <dolio> | Then lens has some nice stuff for deriving the other things from the traversals, instead of wrapping them manually. |
| 20:40:44 | <dolio> | Also maybe auto-writing the traversals in the first place. |
| 20:40:51 | <dsal> | Simple Haskell Guy would always put me against the least-motivated junior developer and compare a simple toListOf kind of thing vs. ~10 lines of code to compare them. I had written something in a test like `thing ^.. stuff . folded . otherStuff . folded . _Just . foo` and the guy just declared he couldn't understand that. |
| 20:41:21 | <tomsmeding> | I mean I don't |
| 20:41:23 | <dsal> | So I walk through it and when I got to _Just I handwaved it as "this is a maybe and we just want the Just value" and Simple Haskell Guy interrupts me to explain that this is actually a prism and to explain what a prism is and all that. |
| 20:41:32 | <tomsmeding> | but that doesn't mean much because I've never actually used lens :D |
| 20:41:59 | → | mechap joins (~mechap@user/mechap) |
| 20:42:25 | → | Square2 joins (~Square4@user/square) |
| 20:42:27 | <dsal> | Yeah, sure. I'm fine with people encountering stuff they don't immediately understand. I just don't think it makes sense to spend an hour arguing over a test assertion that I ended up having to spend another couple hours on writing in a way that Simple Haskell Guy thought was acceptable because Unmotivated Guy didn't immediately know what _Just meant. |
| 20:43:06 | × | gatekempt quits (~gatekempt@user/gatekempt) (Ping timeout: 252 seconds) |
| 20:43:14 | <dsal> | Simple Haskell Guy was a _huge_ test advocate who didn't test his code very well and seemed to be a little annoyed when I did. |
| 20:45:12 | <geekosaur> | this sounds to me like a "bail now" moment in the making |
| 20:45:49 | <mauke> | court later |
| 20:46:23 | <dsal> | He also had this weird theory about how you should have separate config concepts for parameters and config files and runtime config. Unmotivated Guy followed that pattern and we basically had 2-3 structures that were roughly identical except for like, one field and a function that plucked each field from A to B every time you changed something. So I introduced a "type parameter" and a type changing record change for that one field. |
| 20:47:10 | <dsal> | Unmotivated Guy thought that was way too complicated and we should just have pages of untested code with easily demonstrable bugs. |
| 20:47:41 | <dsal> | Anyway, list of people I don't ever want to work with again ++ |
| 20:47:52 | <tomsmeding> | yeah that sounds like records 101 |
| 20:48:09 | <tomsmeding> | I'd call that a _low-tech_ trick |
| 20:48:41 | <dsal> | I think to these people "simple haskell" means I can see everything that is happening. If you have to copy each field one at a time, then you can see the fields being copied. |
| 20:48:56 | <tomsmeding> | maybe they were scarred by C++ |
| 20:49:37 | <tomsmeding> | also "seeing everything that is happening" is subjective, why expand _Just but not foldr |
| 20:49:39 | <dsal> | I honestly couldn't understand any of their motivations. I work with some people now who do things I don't like that much, but I don't think they're _dumb_. |
| 20:50:04 | → | mikoto-chan joins (~mikoto-ch@ip-83-134-209-157.dsl.scarlet.be) |
| 20:50:39 | <dsal> | Someone pointed this out today: https://journal.infinitenegativeutility.com/leaving-haskell-behind |
| 20:51:46 | <dsal> | There's a lot of "I did a thing once and it didn't work there so I'll never use this one thing again." |
| 20:51:49 | <tomsmeding> | domain name says it all? |
| 20:52:39 | <dsal> | It's fairly pro-haskell. Many of the negative bits aren't wrong. |
| 20:53:01 | <dsal> | And they're not even necessarily bad. Like, sometimes your code doesn't build on newer ghc. |
| 20:55:10 | × | tromp quits (~textual@92-110-219-57.cable.dynamic.v4.ziggo.nl) (Quit: My iMac has gone to sleep. ZZZzzz…) |
| 20:55:27 | × | fendor quits (~fendor@2a02:8388:1640:be00:af83:ade1:cd40:fe7a) (Remote host closed the connection) |
| 20:55:30 | × | waleee quits (~waleee@2001:9b0:21c:4000:5bf9:6515:c030:57b7) (Ping timeout: 244 seconds) |
| 20:57:32 | → | waleee joins (~waleee@h-176-10-137-138.NA.cust.bahnhof.se) |
| 20:59:24 | × | mvk quits (~mvk@2607:fea8:5c9a:a600::1c6d) (Ping timeout: 248 seconds) |
| 21:01:43 | <ph88> | in ZonedTime why is the time part a LocalTime and not UTCTime ? |
| 21:05:33 | <glguy> | So that it more directly matches the written representation without math |
| 21:05:37 | <glguy> | I would assume |
| 21:07:35 | <ph88> | should i store UTCTime or LocalTime in my database ? |
| 21:07:54 | <ph88> | i want to store the timezone too so i know in which timezone it was entered |
| 21:08:25 | <glguy> | If you intend to sort by UTC times, I'd store that |
| 21:08:56 | <monochrom> | I recommend UTC time and timezone unless I know what your application really needs. |
| 21:08:56 | <ph88> | yes |
| 21:09:12 | <ph88> | is there a type that has UTCTime and TimeZone ? |
| 21:09:26 | <EvanR> | local time + timezone(offset) can be converted to UTCTime |
| 21:09:29 | <glguy> | No, that wouldn't generally be useful enough to have a name, I think |
| 21:09:43 | <EvanR> | UTC *is* a time zone already |
| 21:09:55 | <EvanR> | UTC+0 |
| 21:10:03 | <glguy> | Usually if you're storing time zones it's on the users record as a viewing preference, not the event |
| 21:10:09 | <monochrom> | Yeah we mean time zone of the user. |
| 21:10:53 | <monochrom> | This is the fundamental difficulty of giving advice without knowing what it's for. |
| 21:11:05 | <ph88> | is there any scenario in which i would want to know the timezone in which the datetime was entered ? |
| 21:11:09 | <monochrom> | For example everyone should just write in Haskell. :) |
| 21:11:16 | <ph88> | it's just a calendar app |
| 21:12:00 | <monochrom> | When the user demands to know "remind me which timezone I used back then"? |
| 21:12:13 | <EvanR> | I'm on a plane going from new york to hawaii, and enter something into the calendar |
| 21:12:17 | <EvanR> | what should the timezone be |
| 21:12:27 | <EvanR> | and who cares lol |
| 21:12:54 | <monochrom> | which brings back to what I said about if you want your software to be on time and under budget, aim for less, e.g., simply deny that kind of demands. :) |
| 21:13:22 | <EvanR> | (in that case, if anyone cares, they're out of luck, it seems) |
| 21:13:42 | <ph88> | it's a hobby project |
| 21:13:46 | <monochrom> | Wait, isn't ZonedTime UTC+zone? |
| 21:13:50 | <EvanR> | no |
| 21:14:01 | <EvanR> | that doesn't make sense |
| 21:14:21 | <ph88> | the database has a type like UTCTime + TimeZone https://neo4j.com/docs/bolt/current/bolt/structure-semantics/#structure-legacy-datetime |
| 21:14:23 | <monochrom> | oh it's localtime+zone |
| 21:14:42 | <monochrom> | Well, like you said, isomorphic. :) |
| 21:15:10 | <EvanR> | yeah you will encounter many time libraries that make no sense so beware |
| 21:15:49 | <monochrom> | Why not have utc+local+zone just for the sake of completeness and remove all hairsplitting :) |
| 21:15:55 | <monochrom> | @quote monochrom polymorphic |
| 21:15:55 | <lambdabot> | monochrom says: All pointless debates can be settled by going polymorphic. |
| 21:16:11 | <EvanR> | plus absolute time, plus universal time |
| 21:16:37 | × | CiaoSen quits (~Jura@2a05:5800:29d:c900:664b:f0ff:fe37:9ef) (Ping timeout: 245 seconds) |
| 21:16:52 | <ph88> | i think i was wrong about the comment on the database now that i'm reading the example |
| 21:17:54 | <monochrom> | hobby project => KISS => just UTC until you regret it |
| 21:17:56 | <EvanR> | ph88, imagine that UTCTime values represent points in real time in real history, and LocalTime is just a Date + HH:MM:SS with no context. Both are useful for different things. And time zone (series) are the very complicated bridge between them, which you might not need for your app at all |
| 21:18:18 | <EvanR> | and a Date is a square on a calendar |
| 21:18:48 | <ph88> | i think utc all the way is a good idea, i'm just taking a moment to think about it |
| 21:19:00 | <geekosaur> | if only time were that simple |
| 21:20:13 | <EvanR> | if I were making a simple calendar app, it would just use Date and time of day. It wouldn't need to know anything about daylight savings time in my country |
| 21:20:48 | <EvanR> | would work as long as my appointment isn't across state lines, esp arizona area where time is super messed up |
| 21:22:18 | → | nate2 joins (~nate@c-98-45-169-16.hsd1.ca.comcast.net) |
| 21:22:25 | <monochrom> | Wait, I thought Illinois was messed up. :) |
| 21:23:02 | <geekosaur> | actually I think illinois is the easy one, they just don't do daylight/summer time |
| 21:23:10 | <EvanR> | northern arizona time doesn't correspond to california, utah, new mexico, or navajo time |
| 21:23:39 | × | todi quits (~snuckls@p4fd1a580.dip0.t-ipconnect.de) (Remote host closed the connection) |
| 21:24:08 | <EvanR> | the visitor center just puts those 4 clocks up and calls it a day |
| 21:27:06 | × | nate2 quits (~nate@c-98-45-169-16.hsd1.ca.comcast.net) (Ping timeout: 260 seconds) |
| 21:27:57 | → | artem joins (~artem@2601:249:4380:8950:f474:e3f8:9806:671) |
| 21:27:57 | × | ulysses4ever quits (~artem@c-73-103-90-145.hsd1.in.comcast.net) (Read error: Connection reset by peer) |
| 21:28:30 | × | michalz quits (~michalz@185.246.207.203) (Remote host closed the connection) |
| 21:28:57 | <ph88> | Sat Sep 17 2112 23:53:47 GMT+0000 the moment where javascript can not accurately encode unix epoch in a 52bit mantissa of the floating point ^^ |
| 21:29:57 | → | mvk joins (~mvk@2607:fea8:5c9a:a600::1c6d) |
| 21:30:27 | → | Tuplanolla joins (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) |
| 21:30:36 | <EvanR> | interesting |
| 21:30:44 | <EvanR> | I'll mark my calendar. In something other than javascript |
| 21:30:53 | <ph88> | xD |
| 21:39:14 | <EvanR> | hmm, localTimeToUTC utc (LocalTime (fromGregorian 2112 9 17) (TimeOfDay 23 53 47)) `diffUTCTime` posixSecondsToUTCTime 0 gives 4503599627s |
| 21:39:19 | <EvanR> | are you sure that can't fit in a double |
| 21:39:33 | <EvanR> | 52 is a lot of bits |
| 21:40:38 | <mauke> | doesn't javascript use milliseconds? |
| 21:41:31 | <EvanR> | after multiplying that number by 1000 and taking the log base 2 I get 42.0something |
| 21:41:53 | <monochrom> | Y2.1K |
| 21:42:08 | <EvanR> | ^ |
| 21:42:28 | × | bratwurst quits (~blaadsfa@2604:3d09:207f:f650:216:3eff:fe5a:a1f8) (Remote host closed the connection) |
| 21:42:46 | → | bratwurst joins (~blaadsfa@2604:3d09:207f:f650:216:3eff:fe5a:a1f8) |
| 21:44:41 | <hpc> | > 2**52 |
| 21:44:43 | <lambdabot> | 4.503599627370496e15 |
| 21:45:19 | <hpc> | > 2**52 `div` 60 `div` 60 `div` 24 `div` 365 |
| 21:45:21 | <lambdabot> | error: |
| 21:45:21 | <lambdabot> | • Ambiguous type variable ‘a0’ arising from a use of ‘show_M461004017431... |
| 21:45:21 | <lambdabot> | prevents the constraint ‘(Show a0)’ from being solved. |
| 21:45:39 | <hpc> | > 2**52 / 60 / 60 / 24 / 365 |
| 21:45:41 | <lambdabot> | 1.4280820736207813e8 |
| 21:45:42 | <mauke> | > 2^52 `div` 60 `div` 60 `div` 24 `div` 365 |
| 21:45:43 | <lambdabot> | 142808207 |
| 21:45:49 | <hpc> | that's a lot of years |
| 21:46:17 | <EvanR> | 4503599627... 4.503599627370496e15 ... probably just numerical coincidence as usual |
| 21:48:04 | <hpc> | off by a factor of 1e6 |
| 21:50:21 | × | acidjnk quits (~acidjnk@p200300d6e7072f45448198b239e9f563.dip0.t-ipconnect.de) (Ping timeout: 245 seconds) |
| 21:51:16 | → | jabuxas joins (~jabuxas@user/jabuxas) |
| 21:55:22 | × | artem quits (~artem@2601:249:4380:8950:f474:e3f8:9806:671) (Read error: Connection reset by peer) |
| 21:55:26 | → | ulysses4ever joins (~artem@c-73-103-90-145.hsd1.in.comcast.net) |
| 21:56:24 | × | mikoto-chan quits (~mikoto-ch@ip-83-134-209-157.dsl.scarlet.be) (Ping timeout: 256 seconds) |
| 21:59:56 | × | mvk quits (~mvk@2607:fea8:5c9a:a600::1c6d) (Ping timeout: 245 seconds) |
| 22:02:59 | × | mechap quits (~mechap@user/mechap) (Quit: WeeChat 4.0.4) |
| 22:10:06 | → | Unicorn_Princess joins (~Unicorn_P@user/Unicorn-Princess/x-3540542) |
| 22:15:31 | × | zmt01 quits (~zmt00@user/zmt00) (Quit: Leaving) |
| 22:18:13 | → | mvk joins (~mvk@2607:fea8:5c9a:a600::1c6d) |
| 22:18:44 | → | zmt00 joins (~zmt00@user/zmt00) |
| 22:19:33 | × | chiselfuse quits (~chiselfus@user/chiselfuse) (Remote host closed the connection) |
| 22:20:05 | → | chiselfuse joins (~chiselfus@user/chiselfuse) |
| 22:25:02 | → | danza_ joins (~francesco@151.43.233.134) |
| 22:27:41 | × | danza quits (~francesco@151.37.224.108) (Ping timeout: 250 seconds) |
| 22:34:18 | → | hgolden joins (~hgolden@2603:8000:9d00:3ed1:fc05:5499:f77c:fbe5) |
| 22:38:45 | → | mikoto-chan joins (~mikoto-ch@85-76-17-199-nat.elisa-mobile.fi) |
| 22:40:34 | <ph88> | https://stackoverflow.com/a/11526569/1833322 |
| 22:40:53 | × | __monty__ quits (~toonn@user/toonn) (Quit: leaving) |
| 22:41:09 | <ph88> | don't know where they pull that extra bit from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER |
| 22:41:28 | <ph88> | i was using a website that did the date calculation other than i expected to the date i mentioned is bs |
| 22:43:12 | × | mikoto-chan quits (~mikoto-ch@85-76-17-199-nat.elisa-mobile.fi) (Ping timeout: 240 seconds) |
| 22:45:03 | → | mikoto-chan joins (~mikoto-ch@85-76-17-199-nat.elisa-mobile.fi) |
| 22:45:53 | × | Pickchea quits (~private@user/pickchea) (Quit: Leaving) |
| 22:49:49 | <shapr> | Anyone going to ICFP this year? |
| 22:54:16 | <ph88> | hi shapr how are you ? |
| 22:55:35 | → | eggplantade joins (~Eggplanta@2600:1700:38c5:d800:4421:6684:8924:105c) |
| 22:55:37 | <int-e> | ph88: there's an implicit 1 in front of the mantissa in IEEE floats (except for denormals at the very low end), so you get a leading 1, followed by 52 more 1 bits, giving 2^53 - 1. (You also get 2^53 itself, but not 2^53 + 1) |
| 22:55:38 | → | texasmynsted joins (~username@99.96.221.112) |
| 22:56:45 | × | mima quits (~mmh@aftr-62-216-211-62.dynamic.mnet-online.de) (Ping timeout: 252 seconds) |
| 22:59:26 | → | Axman6 joins (~Axman6@user/axman6) |
| 22:59:39 | <ph88> | what is that implicit bit ? |
| 22:59:56 | × | eggplantade quits (~Eggplanta@2600:1700:38c5:d800:4421:6684:8924:105c) (Ping timeout: 248 seconds) |
| 23:01:42 | × | oo_miguel quits (~Thunderbi@78-11-179-96.static.ip.netia.com.pl) (Ping timeout: 252 seconds) |
| 23:02:08 | × | xff0x quits (~xff0x@2405:6580:b080:900:37fd:a033:abd0:1c4f) (Ping timeout: 256 seconds) |
| 23:04:00 | → | xff0x joins (~xff0x@178.255.149.135) |
| 23:04:37 | → | [itchyjunk] joins (~itchyjunk@user/itchyjunk/x-7353470) |
| 23:06:00 | <int-e> | ph88: The normal case is that you start with 1., then append the 52 mantissa bits, and the multiply by 2^(e-1023), where e is the 11 exponent bits interpreted as an unsigned integer. |
| 23:06:16 | <int-e> | So that '1.' part is the implicit 1 bit. |
| 23:07:13 | → | tomith joins (tomith@user/tomith) |
| 23:08:02 | <ph88> | thanks int-e |
| 23:08:03 | <ph88> | good thing we all moved to 64bits cpus :p |
| 23:08:26 | <int-e> | The denormal case has e=0, and there you start with 0., then append the mantissae bits, and multiply be 2^-1022. In particular this gives you 0. |
| 23:08:53 | <int-e> | And e = 2047 is used for infinities and NaNs, which are not relevant here. |
| 23:09:13 | <int-e> | (And I've ignored the sign bit.) |
| 23:09:31 | → | wroathe joins (~wroathe@user/wroathe) |
| 23:10:29 | <shapr> | ph88: I'm surviving, how are you? |
| 23:12:03 | <ph88> | shapr, same not just dead yet |
| 23:14:42 | <shapr> | glad to hear it |
| 23:14:51 | → | artem joins (~artem@73.145.241.47) |
| 23:17:37 | ← | TheCatCollective parts (NyaaTheKit@user/calculuscat) (Meow Meow Meow Meow Meow Meow Meow Meow) |
| 23:17:49 | × | ulysses4ever quits (~artem@c-73-103-90-145.hsd1.in.comcast.net) (Ping timeout: 246 seconds) |
| 23:21:43 | → | ulysses4ever joins (~artem@2601:408:c408:31c3:f474:e3f8:9806:671) |
| 23:21:43 | × | artem quits (~artem@73.145.241.47) (Read error: Connection reset by peer) |
| 23:23:06 | → | artem joins (~artem@73.145.241.47) |
| 23:23:06 | × | ulysses4ever quits (~artem@2601:408:c408:31c3:f474:e3f8:9806:671) (Read error: Connection reset by peer) |
| 23:24:28 | × | mvk quits (~mvk@2607:fea8:5c9a:a600::1c6d) (Ping timeout: 248 seconds) |
| 23:25:50 | × | bitdex quits (~bitdex@gateway/tor-sasl/bitdex) (Remote host closed the connection) |
| 23:26:54 | → | bitdex joins (~bitdex@gateway/tor-sasl/bitdex) |
| 23:27:06 | → | Sgeo joins (~Sgeo@user/sgeo) |
| 23:27:33 | × | artem quits (~artem@73.145.241.47) (Ping timeout: 252 seconds) |
| 23:28:59 | → | ulysses4ever joins (~artem@c-73-161-6-146.hsd1.mi.comcast.net) |
| 23:29:12 | × | waleee quits (~waleee@h-176-10-137-138.NA.cust.bahnhof.se) (Ping timeout: 252 seconds) |
| 23:30:12 | → | artem joins (~artem@73.145.240.136) |
| 23:33:03 | × | Tuplanolla quits (~Tuplanoll@91-159-68-236.elisa-laajakaista.fi) (Quit: Leaving.) |
| 23:33:21 | × | ulysses4ever quits (~artem@c-73-161-6-146.hsd1.mi.comcast.net) (Ping timeout: 246 seconds) |
| 23:34:16 | × | artem quits (~artem@73.145.240.136) (Ping timeout: 246 seconds) |
| 23:34:42 | × | xff0x quits (~xff0x@178.255.149.135) (Ping timeout: 252 seconds) |
| 23:35:07 | ← | L29Ah parts (~L29Ah@wikipedia/L29Ah) () |
| 23:36:06 | → | L29Ah joins (~L29Ah@wikipedia/L29Ah) |
| 23:36:23 | → | xff0x joins (~xff0x@2405:6580:b080:900:37fd:a033:abd0:1c4f) |
| 23:36:59 | → | ulysses4ever joins (~artem@73.145.240.45) |
| 23:43:05 | × | wroathe quits (~wroathe@user/wroathe) (Ping timeout: 250 seconds) |
| 23:44:15 | × | Lord_of_Life quits (~Lord@user/lord-of-life/x-2819915) (Ping timeout: 245 seconds) |
| 23:45:49 | → | Lord_of_Life joins (~Lord@user/lord-of-life/x-2819915) |
| 23:54:52 | <EvanR> | int-e, great explanation thanks. |
All times are in UTC on 2023-08-24.