diff --git a/haskell-experiments/.direnv/nix-profile-.3357.d351d0653aeb b/haskell-experiments/.direnv/nix-profile-.3357.d351d0653aeb deleted file mode 120000 index 81277b9..0000000 --- a/haskell-experiments/.direnv/nix-profile-.3357.d351d0653aeb +++ /dev/null @@ -1 +0,0 @@ -/nix/store/yh4sq3dlkly5x6szw95xn5nlw4rn9xz3-ghc-shell-for-haskell-exps-0.1.0.0-0-env \ No newline at end of file diff --git a/haskell-experiments/.direnv/nix-profile-.3928.2c3e5ec5df46 b/haskell-experiments/.direnv/nix-profile-.3928.2c3e5ec5df46 new file mode 120000 index 0000000..fb12d3c --- /dev/null +++ b/haskell-experiments/.direnv/nix-profile-.3928.2c3e5ec5df46 @@ -0,0 +1 @@ +/nix/store/10mznhvw5lmlnm4qk4fxkqf05zapc087-ghc-shell-for-haskell-exps-0.1.0.0-0-env \ No newline at end of file diff --git a/haskell-experiments/.direnv/nix-profile-.3357.d351d0653aeb.rc b/haskell-experiments/.direnv/nix-profile-.3928.2c3e5ec5df46.rc similarity index 88% rename from haskell-experiments/.direnv/nix-profile-.3357.d351d0653aeb.rc rename to haskell-experiments/.direnv/nix-profile-.3928.2c3e5ec5df46.rc index 0b5405f..30a9bb6 100644 --- a/haskell-experiments/.direnv/nix-profile-.3357.d351d0653aeb.rc +++ b/haskell-experiments/.direnv/nix-profile-.3928.2c3e5ec5df46.rc @@ -7,15 +7,15 @@ AR='ar' export AR AS='as' export AS -BASH='/nix/store/rlq03x4cwf8zn73hxaxnx0zn5q9kifls-bash-5.3p3/bin/bash' +BASH='/nix/store/j8645yndikbrvn292zgvyv64xrrmwdcb-bash-5.3p3/bin/bash' CC='gcc' export CC -CONFIG_SHELL='/nix/store/rlq03x4cwf8zn73hxaxnx0zn5q9kifls-bash-5.3p3/bin/bash' +CONFIG_SHELL='/nix/store/j8645yndikbrvn292zgvyv64xrrmwdcb-bash-5.3p3/bin/bash' export CONFIG_SHELL CXX='g++' export CXX HOSTTYPE='x86_64' -HOST_PATH='/nix/store/yijhn548p2589pkybgvbhll09bqsxy0q-ncurses-6.5/bin:/nix/store/gdni20c8009xdz8gms6yn1r2hfhmk1jk-numactl-2.0.18/bin:/nix/store/imad8dvhp77h0pjbckp6wvmnyhp8dpgg-coreutils-9.8/bin:/nix/store/av4xw9f56xlx5pgv862wabfif6m1yc0a-findutils-4.10.0/bin:/nix/store/20axvl7mgj15m23jgmnq97hx37fgz7bk-diffutils-3.12/bin:/nix/store/drc7kang929jaza6cy9zdx10s4gw1z5p-gnused-4.9/bin:/nix/store/x3zjxxz8m4ki88axp0gn8q8m6bldybba-gnugrep-3.12/bin:/nix/store/y2wdhdcrffp9hnkzk06d178hq3g98jay-gawk-5.3.2/bin:/nix/store/yi3c5karhx764ham5rfwk7iynr8mjf6q-gnutar-1.35/bin:/nix/store/d471xb7sfbah076s8rx02i68zpxc2r5n-gzip-1.14/bin:/nix/store/qm9rxn2sc1vrz91i443rr6f0vxm0zd82-bzip2-1.0.8-bin/bin:/nix/store/3fmzbq9y4m9nk235il7scmvwn8j9zy3p-gnumake-4.4.1/bin:/nix/store/rlq03x4cwf8zn73hxaxnx0zn5q9kifls-bash-5.3p3/bin:/nix/store/qrwznp1ikdf0qw05wia2haiwi32ik5n0-patch-2.8/bin:/nix/store/v0rfdwhg6w6i0yb6dbry4srk6pnj3xp0-xz-5.8.1-bin/bin:/nix/store/paj6a1lpzp57hz1djm5bs86b7ci221r0-file-5.45/bin' +HOST_PATH='/nix/store/kpi3v5fl8hlgy5lagjvn6ayq78mla49k-ncurses-6.5/bin:/nix/store/n8f6dc226f3z0yz8b7yh2ksi5gx70mha-numactl-2.0.18/bin:/nix/store/iiishysy5bzkjrawxl4rld1s04qj0k0c-coreutils-9.8/bin:/nix/store/6hcyzg88adcz37hn5pslwb06ck6pnq07-findutils-4.10.0/bin:/nix/store/7ylvy12ylwy8wxya9i2ly8qkhiz7173r-diffutils-3.12/bin:/nix/store/rm3yhwgahfrmshmcrv6cr28x4rz7881s-gnused-4.9/bin:/nix/store/737jwbhw8ji13x9s88z3wpp8pxaqla92-gnugrep-3.12/bin:/nix/store/gh0ijwnyv6csn59yars8z8kxbnd31y8f-gawk-5.3.2/bin:/nix/store/l5ibq1yp8m7jibzgqbmpc46hkcnvv8fq-gnutar-1.35/bin:/nix/store/0hq8fc3ihp7clficpl72lxybfb23qvfc-gzip-1.14/bin:/nix/store/2xq4b1wjl6yklsqs86mf95lg9j8mbxvl-bzip2-1.0.8-bin/bin:/nix/store/bw02qy5hlr6a12p5f2apkk79204n20yh-gnumake-4.4.1/bin:/nix/store/j8645yndikbrvn292zgvyv64xrrmwdcb-bash-5.3p3/bin:/nix/store/mv1hg02434l28cf4vwg4qbrz2h967ms8-patch-2.8/bin:/nix/store/gq3243j1d8y6qgpcrgbbb0vxkbxzs0ix-xz-5.8.1-bin/bin:/nix/store/30k6wlj854gb3rw7ny2rj3fixn8xrx6p-file-5.45/bin' export HOST_PATH IFS=' ' @@ -26,34 +26,34 @@ export LANG LD='ld' export LD LINENO='76' -LOCALE_ARCHIVE='/nix/store/hjlkypp9lpxwzsjycpy7nqg2mnl7qhzv-glibc-locales-2.40-66/lib/locale/locale-archive' +LOCALE_ARCHIVE='/nix/store/64zw8gswdqli6d5jcklisic0f3xgjjdd-glibc-locales-2.40-66/lib/locale/locale-archive' export LOCALE_ARCHIVE MACHTYPE='x86_64-pc-linux-gnu' -NIX_BINTOOLS='/nix/store/xwydcyvlsa3cvssk0y5llgdhlhjvmqdm-binutils-wrapper-2.44' +NIX_BINTOOLS='/nix/store/4dh4138m8gbp56kh63j2pwgsfhf5l8v7-binutils-wrapper-2.44' export NIX_BINTOOLS NIX_BINTOOLS_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu='1' export NIX_BINTOOLS_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu NIX_BUILD_CORES='24' export NIX_BUILD_CORES -NIX_CC='/nix/store/vr15iyyykg9zai6fpgvhcgyw7gckl78w-gcc-wrapper-14.3.0' +NIX_CC='/nix/store/myvv172x2am72534zgn9wx0qp5amq6a8-gcc-wrapper-14.3.0' export NIX_CC NIX_CC_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu='1' export NIX_CC_WRAPPER_TARGET_HOST_x86_64_unknown_linux_gnu -NIX_CFLAGS_COMPILE=' -frandom-seed=yh4sq3dlkl' +NIX_CFLAGS_COMPILE=' -frandom-seed=10mznhvw5l' export NIX_CFLAGS_COMPILE NIX_ENFORCE_NO_NATIVE='1' export NIX_ENFORCE_NO_NATIVE -NIX_GHC='/nix/store/akjf6m9q6jj1xi422b18rlzsavihsn9z-ghc-9.10.3-with-packages/bin/ghc' +NIX_GHC='/nix/store/v6yy2qmxn5hnxnrrdy2wvddl4ifbksk0-ghc-9.10.3-with-packages/bin/ghc' export NIX_GHC -NIX_GHCPKG='/nix/store/akjf6m9q6jj1xi422b18rlzsavihsn9z-ghc-9.10.3-with-packages/bin/ghc-pkg' +NIX_GHCPKG='/nix/store/v6yy2qmxn5hnxnrrdy2wvddl4ifbksk0-ghc-9.10.3-with-packages/bin/ghc-pkg' export NIX_GHCPKG -NIX_GHC_DOCDIR='/nix/store/akjf6m9q6jj1xi422b18rlzsavihsn9z-ghc-9.10.3-with-packages/share/doc/ghc/html' +NIX_GHC_DOCDIR='/nix/store/v6yy2qmxn5hnxnrrdy2wvddl4ifbksk0-ghc-9.10.3-with-packages/share/doc/ghc/html' export NIX_GHC_DOCDIR -NIX_GHC_LIBDIR='/nix/store/akjf6m9q6jj1xi422b18rlzsavihsn9z-ghc-9.10.3-with-packages/lib/ghc-9.10.3/lib' +NIX_GHC_LIBDIR='/nix/store/v6yy2qmxn5hnxnrrdy2wvddl4ifbksk0-ghc-9.10.3-with-packages/lib/ghc-9.10.3/lib' export NIX_GHC_LIBDIR NIX_HARDENING_ENABLE='bindnow format fortify fortify3 libcxxhardeningextensive libcxxhardeningfast pic relro stackclashprotection stackprotector strictoverflow zerocallusedregs' export NIX_HARDENING_ENABLE -NIX_LDFLAGS='-rpath /home/felix/projects/pyrites/haskell-parsing/outputs/out/lib -L/nix/store/yijhn548p2589pkybgvbhll09bqsxy0q-ncurses-6.5/lib -L/nix/store/b9p0zpa93hwvh4d0r1rmgc2500yx2ldn-libffi-3.5.2/lib -L/nix/store/bkicgvyymba52ijm1z5zs96dsqqi59lp-elfutils-0.194/lib -L/nix/store/54jkwsavi3fdciqfyjmbilq0jhvv4jga-gmp-with-cxx-6.3.0/lib -L/nix/store/gdni20c8009xdz8gms6yn1r2hfhmk1jk-numactl-2.0.18/lib -L/nix/store/yijhn548p2589pkybgvbhll09bqsxy0q-ncurses-6.5/lib -L/nix/store/b9p0zpa93hwvh4d0r1rmgc2500yx2ldn-libffi-3.5.2/lib -L/nix/store/bkicgvyymba52ijm1z5zs96dsqqi59lp-elfutils-0.194/lib -L/nix/store/54jkwsavi3fdciqfyjmbilq0jhvv4jga-gmp-with-cxx-6.3.0/lib -L/nix/store/gdni20c8009xdz8gms6yn1r2hfhmk1jk-numactl-2.0.18/lib' +NIX_LDFLAGS='-rpath /home/felix/projects/pyrites/haskell-experiments/outputs/out/lib -L/nix/store/kpi3v5fl8hlgy5lagjvn6ayq78mla49k-ncurses-6.5/lib -L/nix/store/c86nvwib4x4w4lkd3qw2aw40a354b6yd-libffi-3.5.2/lib -L/nix/store/v6v4r40nfy7inyr36yckidhi6ngh0k6p-elfutils-0.194/lib -L/nix/store/z658zzyxfc8106bjl5svssvsjvk513yj-gmp-with-cxx-6.3.0/lib -L/nix/store/n8f6dc226f3z0yz8b7yh2ksi5gx70mha-numactl-2.0.18/lib -L/nix/store/kpi3v5fl8hlgy5lagjvn6ayq78mla49k-ncurses-6.5/lib -L/nix/store/c86nvwib4x4w4lkd3qw2aw40a354b6yd-libffi-3.5.2/lib -L/nix/store/v6v4r40nfy7inyr36yckidhi6ngh0k6p-elfutils-0.194/lib -L/nix/store/z658zzyxfc8106bjl5svssvsjvk513yj-gmp-with-cxx-6.3.0/lib -L/nix/store/n8f6dc226f3z0yz8b7yh2ksi5gx70mha-numactl-2.0.18/lib' export NIX_LDFLAGS NIX_NO_SELF_RPATH='1' NIX_STORE='/nix/store' @@ -68,14 +68,14 @@ OLDPWD='' export OLDPWD OPTERR='1' OSTYPE='linux-gnu' -PATH='/nix/store/akjf6m9q6jj1xi422b18rlzsavihsn9z-ghc-9.10.3-with-packages/bin:/nix/store/ck6g9qnipfxipqraq6avjqayf01cax7s-hspec-discover-2.11.14/bin:/nix/store/5si9l7s9w09xi1wnfpf5r85am2shxz0i-haskell-language-server-2.12.0.0/bin:/nix/store/qvnkv8qa1z18nj573541i8182hpb80b0-cabal-install-3.16.0.0/bin:/nix/store/8q2582rd22xp8jlcg1xn1w219q5lx5xa-patchelf-0.15.2/bin:/nix/store/vr15iyyykg9zai6fpgvhcgyw7gckl78w-gcc-wrapper-14.3.0/bin:/nix/store/kzq78n13l8w24jn8bx4djj79k5j717f1-gcc-14.3.0/bin:/nix/store/q6wgv06q39bfhx2xl8ysc05wi6m2zdss-glibc-2.40-66-bin/bin:/nix/store/imad8dvhp77h0pjbckp6wvmnyhp8dpgg-coreutils-9.8/bin:/nix/store/xwydcyvlsa3cvssk0y5llgdhlhjvmqdm-binutils-wrapper-2.44/bin:/nix/store/dc9vaz50jg7mibk9xvqw5dqv89cxzla3-binutils-2.44/bin:/nix/store/yijhn548p2589pkybgvbhll09bqsxy0q-ncurses-6.5/bin:/nix/store/gdni20c8009xdz8gms6yn1r2hfhmk1jk-numactl-2.0.18/bin:/nix/store/imad8dvhp77h0pjbckp6wvmnyhp8dpgg-coreutils-9.8/bin:/nix/store/av4xw9f56xlx5pgv862wabfif6m1yc0a-findutils-4.10.0/bin:/nix/store/20axvl7mgj15m23jgmnq97hx37fgz7bk-diffutils-3.12/bin:/nix/store/drc7kang929jaza6cy9zdx10s4gw1z5p-gnused-4.9/bin:/nix/store/x3zjxxz8m4ki88axp0gn8q8m6bldybba-gnugrep-3.12/bin:/nix/store/y2wdhdcrffp9hnkzk06d178hq3g98jay-gawk-5.3.2/bin:/nix/store/yi3c5karhx764ham5rfwk7iynr8mjf6q-gnutar-1.35/bin:/nix/store/d471xb7sfbah076s8rx02i68zpxc2r5n-gzip-1.14/bin:/nix/store/qm9rxn2sc1vrz91i443rr6f0vxm0zd82-bzip2-1.0.8-bin/bin:/nix/store/3fmzbq9y4m9nk235il7scmvwn8j9zy3p-gnumake-4.4.1/bin:/nix/store/rlq03x4cwf8zn73hxaxnx0zn5q9kifls-bash-5.3p3/bin:/nix/store/qrwznp1ikdf0qw05wia2haiwi32ik5n0-patch-2.8/bin:/nix/store/v0rfdwhg6w6i0yb6dbry4srk6pnj3xp0-xz-5.8.1-bin/bin:/nix/store/paj6a1lpzp57hz1djm5bs86b7ci221r0-file-5.45/bin' +PATH='/nix/store/v6yy2qmxn5hnxnrrdy2wvddl4ifbksk0-ghc-9.10.3-with-packages/bin:/nix/store/xpq3c9bhlr1iby8kchf918salbf3zdpj-hspec-discover-2.11.14/bin:/nix/store/pkym0fzf9fn58wbkg41xbsgw83ngv49y-haskell-language-server-2.12.0.0/bin:/nix/store/w0y1r4k85x6a7i65sqmn4gdpb3z73wiv-cabal-install-3.16.0.0/bin:/nix/store/axrdk0z4gwqv9kpql2lgqq42l37m3yd1-patchelf-0.15.2/bin:/nix/store/myvv172x2am72534zgn9wx0qp5amq6a8-gcc-wrapper-14.3.0/bin:/nix/store/m1k4nxs8r0fl0pjxqp5n37vxgms7gdlb-gcc-14.3.0/bin:/nix/store/ijmp8r14ivvzk5r95lwx49bbv089003g-glibc-2.40-66-bin/bin:/nix/store/iiishysy5bzkjrawxl4rld1s04qj0k0c-coreutils-9.8/bin:/nix/store/4dh4138m8gbp56kh63j2pwgsfhf5l8v7-binutils-wrapper-2.44/bin:/nix/store/v9zpzmigqkcjrw1jpf0zjc49y47cm55s-binutils-2.44/bin:/nix/store/kpi3v5fl8hlgy5lagjvn6ayq78mla49k-ncurses-6.5/bin:/nix/store/n8f6dc226f3z0yz8b7yh2ksi5gx70mha-numactl-2.0.18/bin:/nix/store/iiishysy5bzkjrawxl4rld1s04qj0k0c-coreutils-9.8/bin:/nix/store/6hcyzg88adcz37hn5pslwb06ck6pnq07-findutils-4.10.0/bin:/nix/store/7ylvy12ylwy8wxya9i2ly8qkhiz7173r-diffutils-3.12/bin:/nix/store/rm3yhwgahfrmshmcrv6cr28x4rz7881s-gnused-4.9/bin:/nix/store/737jwbhw8ji13x9s88z3wpp8pxaqla92-gnugrep-3.12/bin:/nix/store/gh0ijwnyv6csn59yars8z8kxbnd31y8f-gawk-5.3.2/bin:/nix/store/l5ibq1yp8m7jibzgqbmpc46hkcnvv8fq-gnutar-1.35/bin:/nix/store/0hq8fc3ihp7clficpl72lxybfb23qvfc-gzip-1.14/bin:/nix/store/2xq4b1wjl6yklsqs86mf95lg9j8mbxvl-bzip2-1.0.8-bin/bin:/nix/store/bw02qy5hlr6a12p5f2apkk79204n20yh-gnumake-4.4.1/bin:/nix/store/j8645yndikbrvn292zgvyv64xrrmwdcb-bash-5.3p3/bin:/nix/store/mv1hg02434l28cf4vwg4qbrz2h967ms8-patch-2.8/bin:/nix/store/gq3243j1d8y6qgpcrgbbb0vxkbxzs0ix-xz-5.8.1-bin/bin:/nix/store/30k6wlj854gb3rw7ny2rj3fixn8xrx6p-file-5.45/bin' export PATH PS4='+ ' RANLIB='ranlib' export RANLIB READELF='readelf' export READELF -SHELL='/nix/store/rlq03x4cwf8zn73hxaxnx0zn5q9kifls-bash-5.3p3/bin/bash' +SHELL='/nix/store/j8645yndikbrvn292zgvyv64xrrmwdcb-bash-5.3p3/bin/bash' export SHELL SIZE='size' export SIZE @@ -85,7 +85,7 @@ STRINGS='strings' export STRINGS STRIP='strip' export STRIP -XDG_DATA_DIRS='/nix/store/akjf6m9q6jj1xi422b18rlzsavihsn9z-ghc-9.10.3-with-packages/share:/nix/store/qvnkv8qa1z18nj573541i8182hpb80b0-cabal-install-3.16.0.0/share:/nix/store/8q2582rd22xp8jlcg1xn1w219q5lx5xa-patchelf-0.15.2/share' +XDG_DATA_DIRS='/nix/store/v6yy2qmxn5hnxnrrdy2wvddl4ifbksk0-ghc-9.10.3-with-packages/share:/nix/store/w0y1r4k85x6a7i65sqmn4gdpb3z73wiv-cabal-install-3.16.0.0/share:/nix/store/axrdk0z4gwqv9kpql2lgqq42l37m3yd1-patchelf-0.15.2/share' export XDG_DATA_DIRS __structuredAttrs='' export __structuredAttrs @@ -94,14 +94,14 @@ buildCommandPath='/build/.attr-0l2nkwhif96f51f4amnlf414lhl4rv9vh8iffyp431v6s28gs export buildCommandPath buildInputs='' export buildInputs -builder='/nix/store/rlq03x4cwf8zn73hxaxnx0zn5q9kifls-bash-5.3p3/bin/bash' +builder='/nix/store/j8645yndikbrvn292zgvyv64xrrmwdcb-bash-5.3p3/bin/bash' export builder cmakeFlags='' export cmakeFlags configureFlags='' export configureFlags defaultBuildInputs='' -defaultNativeBuildInputs='/nix/store/8q2582rd22xp8jlcg1xn1w219q5lx5xa-patchelf-0.15.2 /nix/store/l2xk4ac1wx9c95kpp8vymv9r9yn57fvh-update-autotools-gnu-config-scripts-hook /nix/store/0y5xmdb7qfvimjwbq7ibg1xdgkgjwqng-no-broken-symlinks.sh /nix/store/cv1d7p48379km6a85h4zp6kr86brh32q-audit-tmpdir.sh /nix/store/85clx3b0xkdf58jn161iy80y5223ilbi-compress-man-pages.sh /nix/store/wgrbkkaldkrlrni33ccvm3b6vbxzb656-make-symlinks-relative.sh /nix/store/5yzw0vhkyszf2d179m0qfkgxmp5wjjx4-move-docs.sh /nix/store/fyaryjvghbkpfnsyw97hb3lyb37s1pd6-move-lib64.sh /nix/store/kd4xwxjpjxi71jkm6ka0np72if9rm3y0-move-sbin.sh /nix/store/pag6l61paj1dc9sv15l7bm5c17xn5kyk-move-systemd-user-units.sh /nix/store/cmzya9irvxzlkh7lfy6i82gbp0saxqj3-multiple-outputs.sh /nix/store/x8c40nfigps493a07sdr2pm5s9j1cdc0-patch-shebangs.sh /nix/store/cickvswrvann041nqxb0rxilc46svw1n-prune-libtool-files.sh /nix/store/xyff06pkhki3qy1ls77w10s0v79c9il0-reproducible-builds.sh /nix/store/z7k98578dfzi6l3hsvbivzm7hfqlk0zc-set-source-date-epoch-to-latest.sh /nix/store/pilsssjjdxvdphlg2h19p0bfx5q0jzkn-strip.sh /nix/store/vr15iyyykg9zai6fpgvhcgyw7gckl78w-gcc-wrapper-14.3.0' +defaultNativeBuildInputs='/nix/store/axrdk0z4gwqv9kpql2lgqq42l37m3yd1-patchelf-0.15.2 /nix/store/wy55v0yk13h90gcv0fffrisks128ziz1-update-autotools-gnu-config-scripts-hook /nix/store/0y5xmdb7qfvimjwbq7ibg1xdgkgjwqng-no-broken-symlinks.sh /nix/store/cv1d7p48379km6a85h4zp6kr86brh32q-audit-tmpdir.sh /nix/store/85clx3b0xkdf58jn161iy80y5223ilbi-compress-man-pages.sh /nix/store/wgrbkkaldkrlrni33ccvm3b6vbxzb656-make-symlinks-relative.sh /nix/store/5yzw0vhkyszf2d179m0qfkgxmp5wjjx4-move-docs.sh /nix/store/fyaryjvghbkpfnsyw97hb3lyb37s1pd6-move-lib64.sh /nix/store/kd4xwxjpjxi71jkm6ka0np72if9rm3y0-move-sbin.sh /nix/store/pag6l61paj1dc9sv15l7bm5c17xn5kyk-move-systemd-user-units.sh /nix/store/cmzya9irvxzlkh7lfy6i82gbp0saxqj3-multiple-outputs.sh /nix/store/x8c40nfigps493a07sdr2pm5s9j1cdc0-patch-shebangs.sh /nix/store/cickvswrvann041nqxb0rxilc46svw1n-prune-libtool-files.sh /nix/store/xyff06pkhki3qy1ls77w10s0v79c9il0-reproducible-builds.sh /nix/store/z7k98578dfzi6l3hsvbivzm7hfqlk0zc-set-source-date-epoch-to-latest.sh /nix/store/pilsssjjdxvdphlg2h19p0bfx5q0jzkn-strip.sh /nix/store/myvv172x2am72534zgn9wx0qp5amq6a8-gcc-wrapper-14.3.0' depsBuildBuild='' export depsBuildBuild depsBuildBuildPropagated='' @@ -137,14 +137,14 @@ declare -a envHostHostHooks=('ccWrapper_addCVars' 'bintoolsWrapper_addLDVars' ) declare -a envHostTargetHooks=('ccWrapper_addCVars' 'bintoolsWrapper_addLDVars' ) declare -a envTargetTargetHooks=() declare -a fixupOutputHooks=('if [ -z "${dontPatchELF-}" ]; then patchELF "$prefix"; fi' 'if [[ -z "${noAuditTmpdir-}" && -e "$prefix" ]]; then auditTmpdir "$prefix"; fi' 'if [ -z "${dontGzipMan-}" ]; then compressManPages "$prefix"; fi' '_moveLib64' '_moveSbin' '_moveSystemdUserUnits' 'patchShebangsAuto' '_pruneLibtoolFiles' '_doStrip' ) -initialPath='/nix/store/imad8dvhp77h0pjbckp6wvmnyhp8dpgg-coreutils-9.8 /nix/store/av4xw9f56xlx5pgv862wabfif6m1yc0a-findutils-4.10.0 /nix/store/20axvl7mgj15m23jgmnq97hx37fgz7bk-diffutils-3.12 /nix/store/drc7kang929jaza6cy9zdx10s4gw1z5p-gnused-4.9 /nix/store/x3zjxxz8m4ki88axp0gn8q8m6bldybba-gnugrep-3.12 /nix/store/y2wdhdcrffp9hnkzk06d178hq3g98jay-gawk-5.3.2 /nix/store/yi3c5karhx764ham5rfwk7iynr8mjf6q-gnutar-1.35 /nix/store/d471xb7sfbah076s8rx02i68zpxc2r5n-gzip-1.14 /nix/store/qm9rxn2sc1vrz91i443rr6f0vxm0zd82-bzip2-1.0.8-bin /nix/store/3fmzbq9y4m9nk235il7scmvwn8j9zy3p-gnumake-4.4.1 /nix/store/rlq03x4cwf8zn73hxaxnx0zn5q9kifls-bash-5.3p3 /nix/store/qrwznp1ikdf0qw05wia2haiwi32ik5n0-patch-2.8 /nix/store/v0rfdwhg6w6i0yb6dbry4srk6pnj3xp0-xz-5.8.1-bin /nix/store/paj6a1lpzp57hz1djm5bs86b7ci221r0-file-5.45' +initialPath='/nix/store/iiishysy5bzkjrawxl4rld1s04qj0k0c-coreutils-9.8 /nix/store/6hcyzg88adcz37hn5pslwb06ck6pnq07-findutils-4.10.0 /nix/store/7ylvy12ylwy8wxya9i2ly8qkhiz7173r-diffutils-3.12 /nix/store/rm3yhwgahfrmshmcrv6cr28x4rz7881s-gnused-4.9 /nix/store/737jwbhw8ji13x9s88z3wpp8pxaqla92-gnugrep-3.12 /nix/store/gh0ijwnyv6csn59yars8z8kxbnd31y8f-gawk-5.3.2 /nix/store/l5ibq1yp8m7jibzgqbmpc46hkcnvv8fq-gnutar-1.35 /nix/store/0hq8fc3ihp7clficpl72lxybfb23qvfc-gzip-1.14 /nix/store/2xq4b1wjl6yklsqs86mf95lg9j8mbxvl-bzip2-1.0.8-bin /nix/store/bw02qy5hlr6a12p5f2apkk79204n20yh-gnumake-4.4.1 /nix/store/j8645yndikbrvn292zgvyv64xrrmwdcb-bash-5.3p3 /nix/store/mv1hg02434l28cf4vwg4qbrz2h967ms8-patch-2.8 /nix/store/gq3243j1d8y6qgpcrgbbb0vxkbxzs0ix-xz-5.8.1-bin /nix/store/30k6wlj854gb3rw7ny2rj3fixn8xrx6p-file-5.45' mesonFlags='' export mesonFlags name='ghc-shell-for-haskell-exps-0.1.0.0-0-env' export name -nativeBuildInputs='/nix/store/akjf6m9q6jj1xi422b18rlzsavihsn9z-ghc-9.10.3-with-packages /nix/store/5si9l7s9w09xi1wnfpf5r85am2shxz0i-haskell-language-server-2.12.0.0 /nix/store/qvnkv8qa1z18nj573541i8182hpb80b0-cabal-install-3.16.0.0' +nativeBuildInputs='/nix/store/v6yy2qmxn5hnxnrrdy2wvddl4ifbksk0-ghc-9.10.3-with-packages /nix/store/pkym0fzf9fn58wbkg41xbsgw83ngv49y-haskell-language-server-2.12.0.0 /nix/store/w0y1r4k85x6a7i65sqmn4gdpb3z73wiv-cabal-install-3.16.0.0' export nativeBuildInputs -out='/home/felix/projects/pyrites/haskell-parsing/outputs/out' +out='/home/felix/projects/pyrites/haskell-experiments/outputs/out' export out outputBin='out' outputDev='out' @@ -161,11 +161,11 @@ passAsFile='buildCommand' export passAsFile patches='' export patches -pkg='/nix/store/vr15iyyykg9zai6fpgvhcgyw7gckl78w-gcc-wrapper-14.3.0' +pkg='/nix/store/myvv172x2am72534zgn9wx0qp5amq6a8-gcc-wrapper-14.3.0' declare -a pkgsBuildBuild=() -declare -a pkgsBuildHost=('/nix/store/akjf6m9q6jj1xi422b18rlzsavihsn9z-ghc-9.10.3-with-packages' '/nix/store/y4zpai8n4lljkbd37lm91vgclwy5mss1-hspec-core-2.11.14' '/nix/store/5hm98p022frdgmfrlfzdaxfm0l2imgxc-ansi-terminal-1.1.3' '/nix/store/v40i9pjr6dk0d1h29ljrf11lxx3d571z-ansi-terminal-types-1.1.3' '/nix/store/rl33wldyly5rwr7x8i2lrwgm4dvs9i5j-colour-2.3.6' '/nix/store/0hp69aq6457kpm2abplgm578rppvifz4-call-stack-0.4.0' '/nix/store/87il3qdxaj7gvm44xy53xn2ygl50f43g-haskell-lexer-1.2.1' '/nix/store/2757psbiqvr2afznk0n73mncdpgn7jib-hspec-expectations-0.8.4' '/nix/store/20c3fvkbm68yam91lsxqwgz3027l8zrx-HUnit-1.6.2.0' '/nix/store/9z62vq67hn3q1h7h3g9z7vrgki53vj52-QuickCheck-2.15.0.1' '/nix/store/2w524dah1f344sppc7y9gm928r8j4p3l-random-1.2.1.3' '/nix/store/qwmgqkmvdigbbhc32aq4jqjlxfhjnh3b-splitmix-0.1.3.1' '/nix/store/b1i2xc46c5vsygxslad1fc8w83161fn8-quickcheck-io-0.2.0' '/nix/store/3xc5iiww5vhxn62z3wsi449332cyj6kn-tf-random-0.5' '/nix/store/xrz27qsmayzy18c80ckr4xzpjsn28n3f-primitive-0.9.1.0' '/nix/store/ck6g9qnipfxipqraq6avjqayf01cax7s-hspec-discover-2.11.14' '/nix/store/5si9l7s9w09xi1wnfpf5r85am2shxz0i-haskell-language-server-2.12.0.0' '/nix/store/qvnkv8qa1z18nj573541i8182hpb80b0-cabal-install-3.16.0.0' '/nix/store/8q2582rd22xp8jlcg1xn1w219q5lx5xa-patchelf-0.15.2' '/nix/store/l2xk4ac1wx9c95kpp8vymv9r9yn57fvh-update-autotools-gnu-config-scripts-hook' '/nix/store/0y5xmdb7qfvimjwbq7ibg1xdgkgjwqng-no-broken-symlinks.sh' '/nix/store/cv1d7p48379km6a85h4zp6kr86brh32q-audit-tmpdir.sh' '/nix/store/85clx3b0xkdf58jn161iy80y5223ilbi-compress-man-pages.sh' '/nix/store/wgrbkkaldkrlrni33ccvm3b6vbxzb656-make-symlinks-relative.sh' '/nix/store/5yzw0vhkyszf2d179m0qfkgxmp5wjjx4-move-docs.sh' '/nix/store/fyaryjvghbkpfnsyw97hb3lyb37s1pd6-move-lib64.sh' '/nix/store/kd4xwxjpjxi71jkm6ka0np72if9rm3y0-move-sbin.sh' '/nix/store/pag6l61paj1dc9sv15l7bm5c17xn5kyk-move-systemd-user-units.sh' '/nix/store/cmzya9irvxzlkh7lfy6i82gbp0saxqj3-multiple-outputs.sh' '/nix/store/x8c40nfigps493a07sdr2pm5s9j1cdc0-patch-shebangs.sh' '/nix/store/cickvswrvann041nqxb0rxilc46svw1n-prune-libtool-files.sh' '/nix/store/xyff06pkhki3qy1ls77w10s0v79c9il0-reproducible-builds.sh' '/nix/store/z7k98578dfzi6l3hsvbivzm7hfqlk0zc-set-source-date-epoch-to-latest.sh' '/nix/store/pilsssjjdxvdphlg2h19p0bfx5q0jzkn-strip.sh' '/nix/store/vr15iyyykg9zai6fpgvhcgyw7gckl78w-gcc-wrapper-14.3.0' '/nix/store/xwydcyvlsa3cvssk0y5llgdhlhjvmqdm-binutils-wrapper-2.44' ) +declare -a pkgsBuildHost=('/nix/store/v6yy2qmxn5hnxnrrdy2wvddl4ifbksk0-ghc-9.10.3-with-packages' '/nix/store/3if09zz5yh2xp06k74df4ffllcq242v4-hspec-core-2.11.14' '/nix/store/15kpl1k04j2734jpxxn3822yj0l40j4n-ansi-terminal-1.1.3' '/nix/store/hg3dyhm276hkzqbp6grcaryq9db8yiq0-ansi-terminal-types-1.1.3' '/nix/store/86g9qx4iixnzfl2pn14mgfhjrc7ys3bp-colour-2.3.6' '/nix/store/l7wqc6ylsgxnryqq6adxy33f887yff38-call-stack-0.4.0' '/nix/store/8ca4l9p89fnj897pqkhqz8grgv67al3n-haskell-lexer-1.2.1' '/nix/store/y7zpz5zp7sr8fyb8g03hrp1h2nvyg6wl-hspec-expectations-0.8.4' '/nix/store/djlag105fka13zx06xk909grhzzd8sl4-HUnit-1.6.2.0' '/nix/store/vbgfxw3pjdq8k1w71wc0lf7ylp2c85ya-QuickCheck-2.15.0.1' '/nix/store/zpskiivq0xq3k45dcr697fgm2vkydcn1-random-1.2.1.3' '/nix/store/fpk42za9sgq0a2x3waizix007wq2s7m4-splitmix-0.1.3.1' '/nix/store/hq5260px20y1ym58rr8a0w1hfc31gkjd-quickcheck-io-0.2.0' '/nix/store/5l29zzwfq7qkya578zcsbqzm6vqpllrw-tf-random-0.5' '/nix/store/x87fdsm1a9ggy746dlsa21g1qysj0p2x-primitive-0.9.1.0' '/nix/store/xpq3c9bhlr1iby8kchf918salbf3zdpj-hspec-discover-2.11.14' '/nix/store/pkym0fzf9fn58wbkg41xbsgw83ngv49y-haskell-language-server-2.12.0.0' '/nix/store/w0y1r4k85x6a7i65sqmn4gdpb3z73wiv-cabal-install-3.16.0.0' '/nix/store/axrdk0z4gwqv9kpql2lgqq42l37m3yd1-patchelf-0.15.2' '/nix/store/wy55v0yk13h90gcv0fffrisks128ziz1-update-autotools-gnu-config-scripts-hook' '/nix/store/0y5xmdb7qfvimjwbq7ibg1xdgkgjwqng-no-broken-symlinks.sh' '/nix/store/cv1d7p48379km6a85h4zp6kr86brh32q-audit-tmpdir.sh' '/nix/store/85clx3b0xkdf58jn161iy80y5223ilbi-compress-man-pages.sh' '/nix/store/wgrbkkaldkrlrni33ccvm3b6vbxzb656-make-symlinks-relative.sh' '/nix/store/5yzw0vhkyszf2d179m0qfkgxmp5wjjx4-move-docs.sh' '/nix/store/fyaryjvghbkpfnsyw97hb3lyb37s1pd6-move-lib64.sh' '/nix/store/kd4xwxjpjxi71jkm6ka0np72if9rm3y0-move-sbin.sh' '/nix/store/pag6l61paj1dc9sv15l7bm5c17xn5kyk-move-systemd-user-units.sh' '/nix/store/cmzya9irvxzlkh7lfy6i82gbp0saxqj3-multiple-outputs.sh' '/nix/store/x8c40nfigps493a07sdr2pm5s9j1cdc0-patch-shebangs.sh' '/nix/store/cickvswrvann041nqxb0rxilc46svw1n-prune-libtool-files.sh' '/nix/store/xyff06pkhki3qy1ls77w10s0v79c9il0-reproducible-builds.sh' '/nix/store/z7k98578dfzi6l3hsvbivzm7hfqlk0zc-set-source-date-epoch-to-latest.sh' '/nix/store/pilsssjjdxvdphlg2h19p0bfx5q0jzkn-strip.sh' '/nix/store/myvv172x2am72534zgn9wx0qp5amq6a8-gcc-wrapper-14.3.0' '/nix/store/4dh4138m8gbp56kh63j2pwgsfhf5l8v7-binutils-wrapper-2.44' ) declare -a pkgsBuildTarget=() -declare -a pkgsHostHost=('/nix/store/yijhn548p2589pkybgvbhll09bqsxy0q-ncurses-6.5' '/nix/store/b9p0zpa93hwvh4d0r1rmgc2500yx2ldn-libffi-3.5.2' '/nix/store/bkicgvyymba52ijm1z5zs96dsqqi59lp-elfutils-0.194' '/nix/store/54jkwsavi3fdciqfyjmbilq0jhvv4jga-gmp-with-cxx-6.3.0' '/nix/store/gdni20c8009xdz8gms6yn1r2hfhmk1jk-numactl-2.0.18' ) +declare -a pkgsHostHost=('/nix/store/kpi3v5fl8hlgy5lagjvn6ayq78mla49k-ncurses-6.5' '/nix/store/c86nvwib4x4w4lkd3qw2aw40a354b6yd-libffi-3.5.2' '/nix/store/v6v4r40nfy7inyr36yckidhi6ngh0k6p-elfutils-0.194' '/nix/store/z658zzyxfc8106bjl5svssvsjvk513yj-gmp-with-cxx-6.3.0' '/nix/store/n8f6dc226f3z0yz8b7yh2ksi5gx70mha-numactl-2.0.18' ) declare -a pkgsHostTarget=() declare -a pkgsTargetTarget=() declare -a postFixupHooks=('noBrokenSymlinksInAllOutputs' '_makeSymlinksRelativeInAllOutputs' '_multioutPropagateDev' ) @@ -173,7 +173,7 @@ declare -a postUnpackHooks=('_updateSourceDateEpochFromSourceRoot' ) declare -a preConfigureHooks=('_multioutConfig' ) preConfigurePhases=' updateAutotoolsGnuConfigScriptsPhase' declare -a preFixupHooks=('_moveToShare' '_multioutDocs' '_multioutDevs' ) -prefix='/home/felix/projects/pyrites/haskell-parsing/outputs/out' +prefix='/home/felix/projects/pyrites/haskell-experiments/outputs/out' declare -a propagatedBuildDepFiles=('propagated-build-build-deps' 'propagated-native-build-inputs' 'propagated-build-target-deps' ) propagatedBuildInputs='' export propagatedBuildInputs @@ -181,11 +181,11 @@ declare -a propagatedHostDepFiles=('propagated-host-host-deps' 'propagated-build propagatedNativeBuildInputs='' export propagatedNativeBuildInputs declare -a propagatedTargetDepFiles=('propagated-target-target-deps' ) -shell='/nix/store/rlq03x4cwf8zn73hxaxnx0zn5q9kifls-bash-5.3p3/bin/bash' +shell='/nix/store/j8645yndikbrvn292zgvyv64xrrmwdcb-bash-5.3p3/bin/bash' export shell shellHook='unset TEMP TMP TEMPDIR TMPDIR' export shellHook -stdenv='/nix/store/s3w5m3spa1g71hx0yb82lvk6394j3w5j-stdenv-linux' +stdenv='/nix/store/45wimpzmh2rkgagv1r42q9v73cpdfr58-stdenv-linux' export stdenv strictDeps='' export strictDeps @@ -2101,7 +2101,7 @@ updateAutotoolsGnuConfigScriptsPhase () for f in $(find . -type f -name "$script"); do echo "Updating Autotools / GNU config script to a newer upstream version: $f"; - cp -f "/nix/store/1kzclixw4c13wxin0b6cij1zykvwp0wb-gnu-config-2024-01-01/$script" "$f"; + cp -f "/nix/store/yhwnzyhfqd9ficmxmbbryp2s8ymkzmdf-gnu-config-2024-01-01/$script" "$f"; done; done } diff --git a/haskell-experiments/haskell-experiments.cabal b/haskell-experiments/haskell-experiments.cabal index 0d244db..c1a1139 100644 --- a/haskell-experiments/haskell-experiments.cabal +++ b/haskell-experiments/haskell-experiments.cabal @@ -79,12 +79,13 @@ test-suite haskell-exps-test -- Test dependencies. build-depends: base, hspec, langfeatures, megaparsec other-modules: Test.OlogsSpec, - Test.SimpleParserSpec + Test.SimpleParserSpec, + Test.ArithmeticParserSpec library langfeatures - build-depends: base, containers, megaparsec, parser-combinators + build-depends: base, containers, megaparsec, parser-combinators, text hs-source-dirs: src - exposed-modules: Ologs, SimpleParser + exposed-modules: Ologs, SimpleParser, ArithmeticParser ghc-options: -Wall executable haskell-experiments diff --git a/haskell-experiments/src/ArithmeticParser.hs b/haskell-experiments/src/ArithmeticParser.hs new file mode 100644 index 0000000..59edd6a --- /dev/null +++ b/haskell-experiments/src/ArithmeticParser.hs @@ -0,0 +1,111 @@ +{-# LANGUAGE OverloadedStrings #-} + +module ArithmeticParser where + +import Text.Megaparsec +import Text.Megaparsec.Char +import qualified Text.Megaparsec.Char.Lexer as L +import Data.Void +import Data.Text (Text) +import qualified Data.Text as T + +-- Type aliases for convenience +type Parser = Parsec Void Text + +-- ┌───────────────────────────────┐ +-- │ AST Definition │ +-- └───────────────────────────────┘ +data Expr + = ENumber Integer -- 42, -7, etc. + | EAdd Expr Expr + | ESub Expr Expr + | EMul Expr Expr + | EDiv Expr Expr + deriving (Show, Eq) + +-- ┌───────────────────────────────┐ +-- │ Basic lexemes │ +-- └───────────────────────────────┘ + +-- Skip spaces & newlines +sc :: Parser () +sc = L.space space1 lineComment blockComment + where + lineComment = L.skipLineComment "--" + blockComment = L.skipBlockComment "{-" "-}" + +-- Lexeme: consume sc after token +lexeme :: Parser a -> Parser a +lexeme = L.lexeme sc + +-- Symbols we care about +symbol :: Text -> Parser Text +symbol = L.symbol sc + +parens :: Parser a -> Parser a +parens = between (symbol "(") (symbol ")") + +integer :: Parser Integer +integer = lexeme L.decimal + +signedInteger :: Parser Integer +signedInteger = L.signed sc integer + +-- ┌───────────────────────────────┐ +-- │ Expression levels │ +-- └───────────────────────────────┘ + +-- Lowest precedence: numbers & parenthesized expressions +term :: Parser Expr +term = number + <|> parens expr + +number :: Parser Expr +number = ENumber <$> signedInteger + +-- Multiplication & division (left-associative) +factor :: Parser Expr +factor = term `chainl1` mulOrDiv + where + mulOrDiv = EMul <$ symbol "*" + <|> EDiv <$ symbol "/" + +-- Addition & subtraction (left-associative) +expr :: Parser Expr +expr = factor `chainl1` addOrSub + where + addOrSub = EAdd <$ symbol "+" + <|> ESub <$ symbol "-" + +-- ┌───────────────────────────────┐ +-- │ Main parser │ +-- └───────────────────────────────┘ + +parseExpr :: Text -> Either (ParseErrorBundle Text Void) Expr +parseExpr input = + parse (sc *> expr <* eof) "" input + +-- ┌───────────────────────────────┐ +-- │ Helpful chainl1 alias │ +-- └───────────────────────────────┘ +chainl1 :: Parser a -> Parser (a -> a -> a) -> Parser a +chainl1 p op = do + x <- p + rest x + where + rest x = (do f <- op; y <- p; rest (f x y)) <|> pure x + +-- ┌───────────────────────────────┐ +-- │ Examples │ +-- └───────────────────────────────┘ +examples :: [(Text, Maybe Expr)] +examples = + [ ("42", Just $ ENumber 42) + , ("-7 + 3", Just $ EAdd (ENumber (-7)) (ENumber 3)) + , ("2 * (3 + 4)", Just $ EMul (ENumber 2) (EAdd (ENumber 3) (ENumber 4))) + , ("10 - 2 * 3", Just $ ESub (ENumber 10) (EMul (ENumber 2) (ENumber 3))) + , ("(8 / 2) + 1", Just $ EAdd (EDiv (ENumber 8) (ENumber 2)) (ENumber 1)) + , ("", Nothing) + , ("5 +", Nothing) -- incomplete + , ("2 ** 3", Nothing) -- ** not supported + ] \ No newline at end of file diff --git a/haskell-experiments/test/Main.hs b/haskell-experiments/test/Main.hs index deca85c..586d9db 100644 --- a/haskell-experiments/test/Main.hs +++ b/haskell-experiments/test/Main.hs @@ -3,11 +3,11 @@ import Test.Hspec import qualified Test.OlogsSpec as Ologs import qualified Test.SimpleParserSpec as SimpleParserSpec ---import Test.FooSpec +import qualified Test.ArithmeticParserSpec as ArithmeticParserSpec main :: IO () main = hspec $ do describe "Ologs" Ologs.spec describe "SimpleParser" SimpleParserSpec.spec --- describe "My amazing tests" [ FastLaneSpec FooSpec ] + describe "ArithmeticParser" ArithmeticParserSpec.spec diff --git a/haskell-experiments/test/Test/ArithmeticParserSpec.hs b/haskell-experiments/test/Test/ArithmeticParserSpec.hs new file mode 100644 index 0000000..2632d5d --- /dev/null +++ b/haskell-experiments/test/Test/ArithmeticParserSpec.hs @@ -0,0 +1,30 @@ +{-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE DuplicateRecordFields #-} +{-# LANGUAGE OverloadedRecordDot #-} +{-# HLINT ignore "Use const" #-} +{-# HLINT ignore "Unused LANGUAGE pragma" #-} +{-# HLINT ignore "Avoid lambda" #-} +{-# LANGUAGE ScopedTypeVariables #-} +{-# LANGUAGE NoFieldSelectors #-} +{-# OPTIONS_GHC -Wno-unrecognised-pragmas #-} +{-# LANGUAGE TypeApplications #-} + +module Test.ArithmeticParserSpec where + +import Test.Hspec + +import ArithmeticParser + +spec :: Spec +spec = do + describe "evaluate expressions" $ do + it "with basic arithmetic on literals" $ do + parseExpr "42" `shouldBe` Right (ENumber 42) + parseExpr "-7 + 3" `shouldBe` Right ( EAdd (ENumber (-7)) (ENumber 3)) + parseExpr "2 * (3 + 4)" `shouldBe` Right ( EMul (ENumber 2) (EAdd (ENumber 3) (ENumber 4))) + parseExpr "10 - 2 * 3" `shouldBe` Right (ESub (ENumber 10) (EMul (ENumber 2) (ENumber 3))) + parseExpr "(8 / 2) + 1" `shouldBe` Right (EAdd (EDiv (ENumber 8) (ENumber 2)) (ENumber 1)) + parseExpr "2 + 3 * (10 - 4)" `shouldBe` Right (EAdd (ENumber 2) (EMul (ENumber 3) (ESub (ENumber 10) (ENumber 4)))) + + +