├── .github └── workflows │ └── verify.yml ├── .gitignore ├── ChangeLog.md ├── LICENSE ├── README.md ├── Setup.hs ├── app └── Main.hs ├── docs ├── html │ ├── C011X16H4TS │ │ ├── 1.html │ │ ├── 2.html │ │ └── 3.html │ ├── C014PGG641Z │ │ ├── 3 │ │ │ ├── 1648983203.439729.html │ │ │ └── 1650460004.502769.html │ │ ├── 1.html │ │ ├── 2.html │ │ ├── 3.html │ │ └── 4.html │ ├── C01LT3YTT3K │ │ ├── 1 │ │ │ ├── 1612094550.004200.html │ │ │ ├── 1612672201.005100.html │ │ │ ├── 1617338179.000200.html │ │ │ └── 1624767749.001200.html │ │ └── 1.html │ ├── C028VRTRBRT │ │ ├── 1 │ │ │ ├── 1627105018.007400.html │ │ │ └── 1627350084.025300.html │ │ └── 1.html │ ├── C4LFB6DE0 │ │ ├── 28 │ │ │ ├── 1613956587.005500.html │ │ │ ├── 1617245039.007000.html │ │ │ ├── 1618724316.011700.html │ │ │ └── 1620546311.018000.html │ │ ├── 31 │ │ │ ├── 1644881915.957309.html │ │ │ └── 1645869092.683589.html │ │ ├── 1.html │ │ ├── 10.html │ │ ├── 11.html │ │ ├── 12.html │ │ ├── 13.html │ │ ├── 14.html │ │ ├── 15.html │ │ ├── 16.html │ │ ├── 17.html │ │ ├── 18.html │ │ ├── 19.html │ │ ├── 2.html │ │ ├── 20.html │ │ ├── 21.html │ │ ├── 22.html │ │ ├── 23.html │ │ ├── 24.html │ │ ├── 25.html │ │ ├── 26.html │ │ ├── 27.html │ │ ├── 28.html │ │ ├── 29.html │ │ ├── 3.html │ │ ├── 30.html │ │ ├── 31.html │ │ ├── 4.html │ │ ├── 5.html │ │ ├── 6.html │ │ ├── 7.html │ │ ├── 8.html │ │ └── 9.html │ ├── C4M4TT8JJ │ │ ├── 86 │ │ │ ├── 1611635843.002700.html │ │ │ ├── 1612022548.006900.html │ │ │ ├── 1612468125.015700.html │ │ │ ├── 1612576852.021800.html │ │ │ └── 1612691367.028600.html │ │ ├── 87 │ │ │ ├── 1613187519.058400.html │ │ │ ├── 1613292258.064700.html │ │ │ └── 1613846879.002100.html │ │ ├── 88 │ │ │ ├── 1614305304.034000.html │ │ │ ├── 1614310203.037900.html │ │ │ ├── 1614591474.091300.html │ │ │ ├── 1615251026.000500.html │ │ │ ├── 1615295221.004700.html │ │ │ ├── 1615607158.009100.html │ │ │ ├── 1615693605.012700.html │ │ │ └── 1615854749.027500.html │ │ ├── 89 │ │ │ ├── 1616510930.011600.html │ │ │ ├── 1617327295.025100.html │ │ │ └── 1617972510.033000.html │ │ ├── 90 │ │ │ ├── 1619069649.065500.html │ │ │ ├── 1619493858.084300.html │ │ │ ├── 1619928838.094000.html │ │ │ ├── 1620029434.096200.html │ │ │ ├── 1620280883.099400.html │ │ │ ├── 1621513892.003700.html │ │ │ ├── 1621994779.009200.html │ │ │ ├── 1622047804.013300.html │ │ │ └── 1622371401.016400.html │ │ ├── 91 │ │ │ ├── 1622820046.019800.html │ │ │ ├── 1623722353.041800.html │ │ │ ├── 1624987289.061200.html │ │ │ ├── 1624992854.062200.html │ │ │ ├── 1625856353.075000.html │ │ │ ├── 1625974549.079200.html │ │ │ └── 1625976050.082000.html │ │ ├── 92 │ │ │ ├── 1626200716.092000.html │ │ │ ├── 1627643113.002900.html │ │ │ ├── 1627703177.006500.html │ │ │ ├── 1629156000.020400.html │ │ │ ├── 1629466360.028800.html │ │ │ ├── 1629545174.029600.html │ │ │ └── 1629685901.031100.html │ │ ├── 93 │ │ │ ├── 1630667956.003500.html │ │ │ ├── 1632365570.023900.html │ │ │ ├── 1633166027.027900.html │ │ │ └── 1634264083.037100.html │ │ ├── 94 │ │ │ ├── 1635521085.016200.html │ │ │ ├── 1635650900.021400.html │ │ │ ├── 1635759029.026100.html │ │ │ ├── 1636293816.041900.html │ │ │ ├── 1636342237.050300.html │ │ │ ├── 1636543001.068700.html │ │ │ ├── 1636593820.071200.html │ │ │ └── 1636619243.077600.html │ │ ├── 95 │ │ │ ├── 1637028729.092700.html │ │ │ ├── 1637063234.095600.html │ │ │ ├── 1637287667.115800.html │ │ │ ├── 1637317607.124900.html │ │ │ ├── 1637972744.144700.html │ │ │ ├── 1638260974.162600.html │ │ │ ├── 1639396854.212900.html │ │ │ ├── 1639703712.215900.html │ │ │ └── 1639710877.216400.html │ │ ├── 96 │ │ │ ├── 1639807805.218100.html │ │ │ ├── 1639981418.221400.html │ │ │ ├── 1641050509.235000.html │ │ │ ├── 1642126327.007000.html │ │ │ └── 1644812798.129959.html │ │ ├── 97 │ │ │ ├── 1645053430.368109.html │ │ │ ├── 1645872077.736799.html │ │ │ ├── 1646324302.253439.html │ │ │ ├── 1646349654.474939.html │ │ │ ├── 1647257957.991509.html │ │ │ └── 1647925150.102249.html │ │ ├── 98 │ │ │ ├── 1649412137.652789.html │ │ │ ├── 1650355795.738429.html │ │ │ ├── 1650374515.243699.html │ │ │ ├── 1651023719.425839.html │ │ │ ├── 1651148345.393959.html │ │ │ ├── 1651799712.380809.html │ │ │ └── 1652332716.589039.html │ │ ├── 99 │ │ │ ├── 1654178448.929169.html │ │ │ ├── 1654647023.217789.html │ │ │ ├── 1656898367.069619.html │ │ │ └── 1658186144.880249.html │ │ ├── 100 │ │ │ ├── 1660466957.928909.html │ │ │ ├── 1662902269.344689.html │ │ │ ├── 1663206589.511039.html │ │ │ └── 1663331957.528359.html │ │ ├── 101 │ │ │ ├── 1668735687.824279.html │ │ │ ├── 1669288425.378439.html │ │ │ ├── 1669864039.382499.html │ │ │ ├── 1671012275.019769.html │ │ │ ├── 1671850321.263199.html │ │ │ ├── 1672887665.396769.html │ │ │ ├── 1673576665.585869.html │ │ │ └── 1674642458.472019.html │ │ ├── 102 │ │ │ ├── 1676195913.344389.html │ │ │ ├── 1676274963.934119.html │ │ │ ├── 1678542309.366269.html │ │ │ ├── 1678587612.874699.html │ │ │ ├── 1680670312.999969.html │ │ │ ├── 1680693382.818309.html │ │ │ └── 1681355182.628729.html │ │ ├── 103 │ │ │ ├── 1685234164.446779.html │ │ │ ├── 1686960130.612459.html │ │ │ ├── 1687038464.141409.html │ │ │ ├── 1692159038.525649.html │ │ │ └── 1692276375.313729.html │ │ ├── 104 │ │ │ ├── 1695683903.592829.html │ │ │ ├── 1695776800.610899.html │ │ │ ├── 1696131275.202069.html │ │ │ ├── 1696652143.792849.html │ │ │ ├── 1697079483.233489.html │ │ │ ├── 1697370997.794769.html │ │ │ ├── 1698326745.756449.html │ │ │ ├── 1698812500.367789.html │ │ │ ├── 1700012206.547009.html │ │ │ └── 1701095236.479149.html │ │ ├── 105 │ │ │ ├── 1701534202.711679.html │ │ │ ├── 1702562421.026439.html │ │ │ ├── 1705977194.178089.html │ │ │ └── 1709162962.604589.html │ │ ├── 106 │ │ │ ├── 1715401346.428539.html │ │ │ ├── 1716465336.649259.html │ │ │ ├── 1718602264.313349.html │ │ │ ├── 1720046658.241399.html │ │ │ ├── 1729153613.735389.html │ │ │ └── 1732520876.559579.html │ │ ├── 107 │ │ │ ├── 1744697440.723989.html │ │ │ └── 1746692008.946769.html │ │ ├── 1.html │ │ ├── 10.html │ │ ├── 100.html │ │ ├── 101.html │ │ ├── 102.html │ │ ├── 103.html │ │ ├── 104.html │ │ ├── 105.html │ │ ├── 106.html │ │ ├── 107.html │ │ ├── 11.html │ │ ├── 12.html │ │ ├── 13.html │ │ ├── 14.html │ │ ├── 15.html │ │ ├── 16.html │ │ ├── 17.html │ │ ├── 18.html │ │ ├── 19.html │ │ ├── 2.html │ │ ├── 20.html │ │ ├── 21.html │ │ ├── 22.html │ │ ├── 23.html │ │ ├── 24.html │ │ ├── 25.html │ │ ├── 26.html │ │ ├── 27.html │ │ ├── 28.html │ │ ├── 29.html │ │ ├── 3.html │ │ ├── 30.html │ │ ├── 31.html │ │ ├── 32.html │ │ ├── 33.html │ │ ├── 34.html │ │ ├── 35.html │ │ ├── 36.html │ │ ├── 37.html │ │ ├── 38.html │ │ ├── 39.html │ │ ├── 4.html │ │ ├── 40.html │ │ ├── 41.html │ │ ├── 42.html │ │ ├── 43.html │ │ ├── 44.html │ │ ├── 45.html │ │ ├── 46.html │ │ ├── 47.html │ │ ├── 48.html │ │ ├── 49.html │ │ ├── 5.html │ │ ├── 50.html │ │ ├── 51.html │ │ ├── 52.html │ │ ├── 53.html │ │ ├── 54.html │ │ ├── 55.html │ │ ├── 56.html │ │ ├── 57.html │ │ ├── 58.html │ │ ├── 59.html │ │ ├── 6.html │ │ ├── 60.html │ │ ├── 61.html │ │ ├── 62.html │ │ ├── 63.html │ │ ├── 64.html │ │ ├── 65.html │ │ ├── 66.html │ │ ├── 67.html │ │ ├── 68.html │ │ ├── 69.html │ │ ├── 7.html │ │ ├── 70.html │ │ ├── 71.html │ │ ├── 72.html │ │ ├── 73.html │ │ ├── 74.html │ │ ├── 75.html │ │ ├── 76.html │ │ ├── 77.html │ │ ├── 78.html │ │ ├── 79.html │ │ ├── 8.html │ │ ├── 80.html │ │ ├── 81.html │ │ ├── 82.html │ │ ├── 83.html │ │ ├── 84.html │ │ ├── 85.html │ │ ├── 86.html │ │ ├── 87.html │ │ ├── 88.html │ │ ├── 89.html │ │ ├── 9.html │ │ ├── 90.html │ │ ├── 91.html │ │ ├── 92.html │ │ ├── 93.html │ │ ├── 94.html │ │ ├── 95.html │ │ ├── 96.html │ │ ├── 97.html │ │ ├── 98.html │ │ └── 99.html │ ├── C4P499EPQ │ │ └── 1.html │ ├── C5666B6BB │ │ ├── 95 │ │ │ ├── 1611252714.001300.html │ │ │ ├── 1612965162.010500.html │ │ │ └── 1614678356.001700.html │ │ ├── 96 │ │ │ ├── 1615609238.006700.html │ │ │ ├── 1615610001.014200.html │ │ │ ├── 1615610091.015600.html │ │ │ ├── 1615610619.017400.html │ │ │ ├── 1615612695.020100.html │ │ │ ├── 1616317363.001400.html │ │ │ ├── 1616399255.005500.html │ │ │ ├── 1616685563.010700.html │ │ │ ├── 1618213908.033500.html │ │ │ ├── 1618539160.036900.html │ │ │ ├── 1618637380.047800.html │ │ │ ├── 1618734832.054000.html │ │ │ ├── 1618901141.068300.html │ │ │ ├── 1619067613.071300.html │ │ │ ├── 1619331178.072300.html │ │ │ ├── 1619698031.076900.html │ │ │ └── 1619747032.077800.html │ │ ├── 97 │ │ │ ├── 1620365648.083900.html │ │ │ ├── 1620880384.089100.html │ │ │ ├── 1621162561.092000.html │ │ │ ├── 1621326587.003000.html │ │ │ ├── 1622361142.005600.html │ │ │ ├── 1622534738.009000.html │ │ │ ├── 1622560579.012400.html │ │ │ ├── 1623111994.019500.html │ │ │ ├── 1623512883.032000.html │ │ │ ├── 1623515683.032900.html │ │ │ ├── 1623853793.049300.html │ │ │ ├── 1625119094.074300.html │ │ │ ├── 1625535613.079800.html │ │ │ └── 1626273407.002900.html │ │ ├── 98 │ │ │ ├── 1626746071.010100.html │ │ │ ├── 1627983207.003000.html │ │ │ ├── 1629447450.023800.html │ │ │ ├── 1630956334.008400.html │ │ │ ├── 1631807873.021100.html │ │ │ ├── 1632012847.029400.html │ │ │ ├── 1632032922.030800.html │ │ │ ├── 1632872950.049700.html │ │ │ └── 1633323700.053100.html │ │ ├── 99 │ │ │ ├── 1635547410.006900.html │ │ │ ├── 1635560352.013800.html │ │ │ ├── 1635915074.018300.html │ │ │ ├── 1636073332.020400.html │ │ │ ├── 1636443228.023600.html │ │ │ ├── 1636592171.025900.html │ │ │ ├── 1636653798.030500.html │ │ │ ├── 1636764294.036400.html │ │ │ ├── 1637734725.045200.html │ │ │ ├── 1638331843.054000.html │ │ │ ├── 1638354464.055200.html │ │ │ ├── 1640255700.059200.html │ │ │ ├── 1641096858.071300.html │ │ │ ├── 1641713631.001900.html │ │ │ ├── 1641837822.005100.html │ │ │ ├── 1642247848.053400.html │ │ │ ├── 1642759812.057700.html │ │ │ └── 1642759949.058200.html │ │ ├── 100 │ │ │ ├── 1643271332.584399.html │ │ │ ├── 1643415225.816389.html │ │ │ ├── 1644212527.932769.html │ │ │ ├── 1645288903.764169.html │ │ │ ├── 1645456116.640939.html │ │ │ ├── 1645494253.870219.html │ │ │ ├── 1645931207.098899.html │ │ │ ├── 1646549201.347189.html │ │ │ ├── 1646652162.319549.html │ │ │ ├── 1647618098.698709.html │ │ │ ├── 1647935277.605289.html │ │ │ ├── 1647940384.012959.html │ │ │ ├── 1647961549.509119.html │ │ │ ├── 1650626935.471989.html │ │ │ └── 1651383744.948649.html │ │ ├── 101 │ │ │ ├── 1652233415.103749.html │ │ │ ├── 1653473368.183629.html │ │ │ ├── 1653628771.280259.html │ │ │ ├── 1653890195.754989.html │ │ │ ├── 1654823514.643629.html │ │ │ ├── 1656521779.943699.html │ │ │ ├── 1657073409.480229.html │ │ │ ├── 1658582996.123349.html │ │ │ ├── 1659000652.702649.html │ │ │ └── 1659398221.402629.html │ │ ├── 102 │ │ │ ├── 1661954651.345509.html │ │ │ ├── 1662340285.680249.html │ │ │ ├── 1662712288.672419.html │ │ │ ├── 1662787201.859309.html │ │ │ ├── 1663570888.297569.html │ │ │ ├── 1663934840.110889.html │ │ │ ├── 1666917551.484099.html │ │ │ ├── 1667543255.892449.html │ │ │ ├── 1667657390.250289.html │ │ │ ├── 1667790807.799879.html │ │ │ ├── 1667909931.978299.html │ │ │ ├── 1668434284.691869.html │ │ │ ├── 1669386398.293779.html │ │ │ ├── 1671806939.647319.html │ │ │ ├── 1673006930.100339.html │ │ │ └── 1673835393.782529.html │ │ ├── 103 │ │ │ ├── 1674372468.666109.html │ │ │ ├── 1674613262.313509.html │ │ │ ├── 1675566381.795629.html │ │ │ ├── 1675937034.855919.html │ │ │ ├── 1676619242.957009.html │ │ │ ├── 1676844723.772979.html │ │ │ ├── 1676912908.924149.html │ │ │ ├── 1677283347.252899.html │ │ │ ├── 1678031344.687819.html │ │ │ ├── 1678493250.805059.html │ │ │ ├── 1680184874.825459.html │ │ │ ├── 1680423862.784269.html │ │ │ ├── 1681290375.582189.html │ │ │ ├── 1682511649.072529.html │ │ │ ├── 1682577714.625679.html │ │ │ ├── 1683290439.834829.html │ │ │ ├── 1684024800.366699.html │ │ │ └── 1684652284.419089.html │ │ ├── 104 │ │ │ ├── 1686190934.052419.html │ │ │ ├── 1686720298.292579.html │ │ │ ├── 1687240914.968079.html │ │ │ ├── 1687321140.257329.html │ │ │ ├── 1687643826.871559.html │ │ │ ├── 1688415525.784589.html │ │ │ ├── 1689048948.519879.html │ │ │ ├── 1690112065.483659.html │ │ │ ├── 1692450923.172359.html │ │ │ ├── 1692784236.307109.html │ │ │ ├── 1692853327.298529.html │ │ │ ├── 1695261242.484609.html │ │ │ ├── 1695954019.278299.html │ │ │ ├── 1696137519.721689.html │ │ │ ├── 1696492633.425049.html │ │ │ ├── 1699051412.441929.html │ │ │ └── 1699181970.294899.html │ │ ├── 105 │ │ │ ├── 1699850628.377719.html │ │ │ ├── 1701180180.539649.html │ │ │ ├── 1701873046.740899.html │ │ │ ├── 1703649203.739559.html │ │ │ ├── 1706051135.662729.html │ │ │ ├── 1709772141.128369.html │ │ │ ├── 1710131564.861859.html │ │ │ ├── 1712532865.503449.html │ │ │ ├── 1712915662.893909.html │ │ │ ├── 1714942645.818289.html │ │ │ └── 1715258221.498639.html │ │ ├── 106 │ │ │ ├── 1717642646.503059.html │ │ │ ├── 1722671507.590769.html │ │ │ ├── 1729153166.017339.html │ │ │ ├── 1732073862.438399.html │ │ │ ├── 1733591002.918799.html │ │ │ ├── 1735318729.005749.html │ │ │ ├── 1736686167.511779.html │ │ │ └── 1736686684.184439.html │ │ ├── 107 │ │ │ └── 1738067646.575529.html │ │ ├── 1.html │ │ ├── 10.html │ │ ├── 100.html │ │ ├── 101.html │ │ ├── 102.html │ │ ├── 103.html │ │ ├── 104.html │ │ ├── 105.html │ │ ├── 106.html │ │ ├── 107.html │ │ ├── 11.html │ │ ├── 12.html │ │ ├── 13.html │ │ ├── 14.html │ │ ├── 15.html │ │ ├── 16.html │ │ ├── 17.html │ │ ├── 18.html │ │ ├── 19.html │ │ ├── 2.html │ │ ├── 20.html │ │ ├── 21.html │ │ ├── 22.html │ │ ├── 23.html │ │ ├── 24.html │ │ ├── 25.html │ │ ├── 26.html │ │ ├── 27.html │ │ ├── 28.html │ │ ├── 29.html │ │ ├── 3.html │ │ ├── 30.html │ │ ├── 31.html │ │ ├── 32.html │ │ ├── 33.html │ │ ├── 34.html │ │ ├── 35.html │ │ ├── 36.html │ │ ├── 37.html │ │ ├── 38.html │ │ ├── 39.html │ │ ├── 4.html │ │ ├── 40.html │ │ ├── 41.html │ │ ├── 42.html │ │ ├── 43.html │ │ ├── 44.html │ │ ├── 45.html │ │ ├── 46.html │ │ ├── 47.html │ │ ├── 48.html │ │ ├── 49.html │ │ ├── 5.html │ │ ├── 50.html │ │ ├── 51.html │ │ ├── 52.html │ │ ├── 53.html │ │ ├── 54.html │ │ ├── 55.html │ │ ├── 56.html │ │ ├── 57.html │ │ ├── 58.html │ │ ├── 59.html │ │ ├── 6.html │ │ ├── 60.html │ │ ├── 61.html │ │ ├── 62.html │ │ ├── 63.html │ │ ├── 64.html │ │ ├── 65.html │ │ ├── 66.html │ │ ├── 67.html │ │ ├── 68.html │ │ ├── 69.html │ │ ├── 7.html │ │ ├── 70.html │ │ ├── 71.html │ │ ├── 72.html │ │ ├── 73.html │ │ ├── 74.html │ │ ├── 75.html │ │ ├── 76.html │ │ ├── 77.html │ │ ├── 78.html │ │ ├── 79.html │ │ ├── 8.html │ │ ├── 80.html │ │ ├── 81.html │ │ ├── 82.html │ │ ├── 83.html │ │ ├── 84.html │ │ ├── 85.html │ │ ├── 86.html │ │ ├── 87.html │ │ ├── 88.html │ │ ├── 89.html │ │ ├── 9.html │ │ ├── 90.html │ │ ├── 91.html │ │ ├── 92.html │ │ ├── 93.html │ │ ├── 94.html │ │ ├── 95.html │ │ ├── 96.html │ │ ├── 97.html │ │ ├── 98.html │ │ └── 99.html │ ├── C7Y71415W │ │ ├── 11 │ │ │ ├── 1633320879.001200.html │ │ │ ├── 1636878256.005900.html │ │ │ ├── 1639147160.009500.html │ │ │ ├── 1664006167.650029.html │ │ │ ├── 1665820771.979199.html │ │ │ ├── 1667832514.002769.html │ │ │ ├── 1671199553.369319.html │ │ │ └── 1673619506.214469.html │ │ ├── 1.html │ │ ├── 10.html │ │ ├── 11.html │ │ ├── 12.html │ │ ├── 2.html │ │ ├── 3.html │ │ ├── 4.html │ │ ├── 5.html │ │ ├── 6.html │ │ ├── 7.html │ │ ├── 8.html │ │ └── 9.html │ ├── C8KBGEBR7 │ │ ├── 1.html │ │ ├── 2.html │ │ ├── 3.html │ │ ├── 4.html │ │ └── 5.html │ ├── C8R0H137H │ │ ├── 1.html │ │ ├── 2.html │ │ └── 3.html │ ├── CA5H65L2J │ │ ├── 1 │ │ │ ├── 1615369450.008900.html │ │ │ └── 1615438176.013600.html │ │ └── 1.html │ ├── CAXQ09PN2 │ │ ├── 26 │ │ │ ├── 1619414865.004700.html │ │ │ ├── 1620189035.017400.html │ │ │ ├── 1620399619.019300.html │ │ │ ├── 1621382473.011600.html │ │ │ ├── 1621864964.014400.html │ │ │ ├── 1622348400.017900.html │ │ │ └── 1622357705.020700.html │ │ ├── 27 │ │ │ ├── 1623503323.031300.html │ │ │ ├── 1625969225.033400.html │ │ │ ├── 1626066744.034500.html │ │ │ ├── 1630394349.000900.html │ │ │ ├── 1633084774.004900.html │ │ │ ├── 1633084997.007600.html │ │ │ ├── 1633163583.017000.html │ │ │ ├── 1633525846.020000.html │ │ │ └── 1634042674.022100.html │ │ ├── 1.html │ │ ├── 10.html │ │ ├── 11.html │ │ ├── 12.html │ │ ├── 13.html │ │ ├── 14.html │ │ ├── 15.html │ │ ├── 16.html │ │ ├── 17.html │ │ ├── 18.html │ │ ├── 19.html │ │ ├── 2.html │ │ ├── 20.html │ │ ├── 21.html │ │ ├── 22.html │ │ ├── 23.html │ │ ├── 24.html │ │ ├── 25.html │ │ ├── 26.html │ │ ├── 27.html │ │ ├── 28.html │ │ ├── 3.html │ │ ├── 4.html │ │ ├── 5.html │ │ ├── 6.html │ │ ├── 7.html │ │ ├── 8.html │ │ └── 9.html │ ├── CCYF8H43A │ │ ├── 2 │ │ │ └── 1622548358.000900.html │ │ ├── 3 │ │ │ ├── 1633146532.003400.html │ │ │ └── 1701664571.387019.html │ │ ├── 1.html │ │ ├── 2.html │ │ ├── 3.html │ │ └── 4.html │ ├── CD87P78HF │ │ ├── 9 │ │ │ └── 1668925818.088229.html │ │ ├── 1.html │ │ ├── 2.html │ │ ├── 3.html │ │ ├── 4.html │ │ ├── 5.html │ │ ├── 6.html │ │ ├── 7.html │ │ ├── 8.html │ │ └── 9.html │ ├── CE368SB5G │ │ ├── 1.html │ │ ├── 2.html │ │ ├── 3.html │ │ ├── 4.html │ │ ├── 5.html │ │ └── 6.html │ ├── CGT2Q4KHP │ │ └── 1.html │ ├── CL3AXB1AL │ │ ├── 6 │ │ │ ├── 1674275065.035079.html │ │ │ ├── 1674359451.004789.html │ │ │ ├── 1675906753.041469.html │ │ │ └── 1679122969.715459.html │ │ ├── 7 │ │ │ ├── 1680713459.208939.html │ │ │ ├── 1680837944.442169.html │ │ │ ├── 1680881517.727479.html │ │ │ ├── 1680882594.428769.html │ │ │ ├── 1680911991.248749.html │ │ │ ├── 1680914067.289309.html │ │ │ ├── 1680922590.107489.html │ │ │ └── 1680941450.522769.html │ │ ├── 8 │ │ │ ├── 1682470671.109409.html │ │ │ ├── 1682510145.007589.html │ │ │ ├── 1682513764.246829.html │ │ │ ├── 1682600591.717579.html │ │ │ ├── 1685765893.274489.html │ │ │ ├── 1686921303.827259.html │ │ │ ├── 1686957789.585189.html │ │ │ ├── 1687045146.684209.html │ │ │ ├── 1687991585.429139.html │ │ │ └── 1691323640.069119.html │ │ ├── 1.html │ │ ├── 2.html │ │ ├── 3.html │ │ ├── 4.html │ │ ├── 5.html │ │ ├── 6.html │ │ ├── 7.html │ │ ├── 8.html │ │ └── 9.html │ ├── CM4J6EDHR │ │ ├── 1.html │ │ ├── 2.html │ │ └── 3.html │ ├── CN3P057K8 │ │ ├── 1.html │ │ ├── 2.html │ │ ├── 3.html │ │ └── 4.html │ ├── CR2TETE5R │ │ ├── 14 │ │ │ ├── 1611579200.002500.html │ │ │ ├── 1612319768.014700.html │ │ │ ├── 1613272635.018000.html │ │ │ ├── 1613481197.020800.html │ │ │ ├── 1613583594.024800.html │ │ │ ├── 1613647033.026500.html │ │ │ ├── 1613882449.004500.html │ │ │ └── 1614772155.014500.html │ │ ├── 15 │ │ │ ├── 1615368796.005200.html │ │ │ ├── 1615617416.010400.html │ │ │ ├── 1616067239.001400.html │ │ │ ├── 1616145276.006000.html │ │ │ ├── 1616146676.007800.html │ │ │ ├── 1617038731.024400.html │ │ │ ├── 1617612652.028900.html │ │ │ └── 1618840415.042600.html │ │ ├── 16 │ │ │ ├── 1621822287.046300.html │ │ │ ├── 1622540988.054000.html │ │ │ ├── 1622971007.062500.html │ │ │ ├── 1624545509.073700.html │ │ │ ├── 1624705846.077200.html │ │ │ ├── 1625121147.086400.html │ │ │ ├── 1625325113.093000.html │ │ │ ├── 1625704875.094700.html │ │ │ ├── 1625740361.095600.html │ │ │ └── 1625874754.096700.html │ │ ├── 17 │ │ │ ├── 1625913127.099100.html │ │ │ ├── 1626265316.107100.html │ │ │ ├── 1626391155.119100.html │ │ │ ├── 1626426545.120400.html │ │ │ ├── 1626428575.121500.html │ │ │ ├── 1626432250.123200.html │ │ │ ├── 1626482136.131300.html │ │ │ ├── 1626581730.143100.html │ │ │ ├── 1626591322.147600.html │ │ │ ├── 1626699311.153800.html │ │ │ ├── 1626701008.155000.html │ │ │ ├── 1626719646.157000.html │ │ │ ├── 1626783472.161000.html │ │ │ ├── 1626814415.163700.html │ │ │ ├── 1626928031.165900.html │ │ │ ├── 1627106280.167900.html │ │ │ ├── 1629383380.007800.html │ │ │ ├── 1629635230.013800.html │ │ │ ├── 1629865592.018300.html │ │ │ └── 1630029104.010700.html │ │ ├── 18 │ │ │ ├── 1631596292.017900.html │ │ │ ├── 1631755708.021300.html │ │ │ ├── 1632232971.029900.html │ │ │ ├── 1632241964.077600.html │ │ │ ├── 1632560266.086500.html │ │ │ ├── 1632963970.095800.html │ │ │ ├── 1633304061.100200.html │ │ │ ├── 1634452624.126300.html │ │ │ ├── 1634872946.009000.html │ │ │ ├── 1635569517.012100.html │ │ │ ├── 1636821329.023600.html │ │ │ ├── 1636885345.028600.html │ │ │ ├── 1636987155.030700.html │ │ │ └── 1637117405.037900.html │ │ ├── 19 │ │ │ ├── 1637817370.043200.html │ │ │ ├── 1638018727.046600.html │ │ │ ├── 1638020585.048800.html │ │ │ ├── 1638431774.056900.html │ │ │ ├── 1638601966.063500.html │ │ │ ├── 1639027158.069100.html │ │ │ ├── 1639064116.075200.html │ │ │ ├── 1639932574.077200.html │ │ │ ├── 1640444272.097200.html │ │ │ ├── 1640875616.107200.html │ │ │ ├── 1641006950.108400.html │ │ │ ├── 1641642723.002800.html │ │ │ ├── 1641657241.003000.html │ │ │ ├── 1641729546.006600.html │ │ │ ├── 1641745084.012100.html │ │ │ ├── 1641915779.016200.html │ │ │ ├── 1642139145.020800.html │ │ │ ├── 1642429110.032900.html │ │ │ ├── 1643019666.037900.html │ │ │ └── 1643286256.145989.html │ │ ├── 20 │ │ │ ├── 1644038215.253089.html │ │ │ ├── 1645322387.120949.html │ │ │ ├── 1645591979.557769.html │ │ │ ├── 1646663320.370199.html │ │ │ ├── 1649116984.990659.html │ │ │ ├── 1649171768.830059.html │ │ │ ├── 1652326651.979459.html │ │ │ └── 1653235507.627809.html │ │ ├── 21 │ │ │ ├── 1653569189.154239.html │ │ │ ├── 1653782439.713629.html │ │ │ ├── 1654687913.448859.html │ │ │ ├── 1655103639.443429.html │ │ │ ├── 1655126132.185639.html │ │ │ ├── 1655215674.852489.html │ │ │ ├── 1655816541.358789.html │ │ │ ├── 1658062508.826259.html │ │ │ ├── 1658247261.191509.html │ │ │ ├── 1658526015.580989.html │ │ │ ├── 1659588829.749109.html │ │ │ ├── 1660043376.546839.html │ │ │ ├── 1660393980.252719.html │ │ │ ├── 1662857005.674419.html │ │ │ └── 1663248758.261049.html │ │ ├── 22 │ │ │ ├── 1665737308.311929.html │ │ │ ├── 1665918777.693479.html │ │ │ ├── 1666062034.575279.html │ │ │ ├── 1667135853.108099.html │ │ │ ├── 1667222331.007019.html │ │ │ ├── 1667297024.821029.html │ │ │ ├── 1668151362.719499.html │ │ │ ├── 1669812950.225089.html │ │ │ ├── 1671020744.415489.html │ │ │ ├── 1671100252.402679.html │ │ │ ├── 1671421718.692919.html │ │ │ └── 1672118439.693829.html │ │ ├── 23 │ │ │ ├── 1681055436.507129.html │ │ │ ├── 1681353081.736949.html │ │ │ ├── 1682068157.989739.html │ │ │ ├── 1682951128.365409.html │ │ │ └── 1683303647.855859.html │ │ ├── 24 │ │ │ ├── 1695955485.899049.html │ │ │ ├── 1700060589.508599.html │ │ │ ├── 1710846238.136989.html │ │ │ └── 1714616748.587099.html │ │ ├── 25 │ │ │ ├── 1717302958.545539.html │ │ │ ├── 1718420231.272899.html │ │ │ ├── 1721482821.240169.html │ │ │ ├── 1721621462.260059.html │ │ │ ├── 1722411011.228429.html │ │ │ ├── 1723043199.659059.html │ │ │ ├── 1723191142.554709.html │ │ │ ├── 1723604741.629259.html │ │ │ ├── 1723870199.257579.html │ │ │ ├── 1724382191.158669.html │ │ │ ├── 1725332548.796509.html │ │ │ ├── 1726908202.015919.html │ │ │ ├── 1728442764.500619.html │ │ │ └── 1729755512.540579.html │ │ ├── 26 │ │ │ ├── 1733269639.986039.html │ │ │ └── 1735495331.934659.html │ │ ├── 1.html │ │ ├── 10.html │ │ ├── 11.html │ │ ├── 12.html │ │ ├── 13.html │ │ ├── 14.html │ │ ├── 15.html │ │ ├── 16.html │ │ ├── 17.html │ │ ├── 18.html │ │ ├── 19.html │ │ ├── 2.html │ │ ├── 20.html │ │ ├── 21.html │ │ ├── 22.html │ │ ├── 23.html │ │ ├── 24.html │ │ ├── 25.html │ │ ├── 26.html │ │ ├── 3.html │ │ ├── 4.html │ │ ├── 5.html │ │ ├── 6.html │ │ ├── 7.html │ │ ├── 8.html │ │ └── 9.html │ ├── CR4U9PBLL │ │ ├── 3 │ │ │ └── 1667265132.796109.html │ │ ├── 1.html │ │ ├── 2.html │ │ └── 3.html │ ├── CUPBC8WCE │ │ ├── 30 │ │ │ ├── 1611378500.009300.html │ │ │ ├── 1611379058.011000.html │ │ │ └── 1611403875.022800.html │ │ ├── 31 │ │ │ ├── 1612056533.043800.html │ │ │ └── 1612603058.075800.html │ │ ├── 32 │ │ │ ├── 1613294088.093400.html │ │ │ ├── 1613297397.094300.html │ │ │ ├── 1613793888.001900.html │ │ │ ├── 1614416432.007400.html │ │ │ └── 1615107648.030300.html │ │ ├── 33 │ │ │ └── 1615626020.064800.html │ │ ├── 34 │ │ │ └── 1618131754.059200.html │ │ ├── 35 │ │ │ ├── 1619859762.084500.html │ │ │ ├── 1620533060.088000.html │ │ │ └── 1621675472.005900.html │ │ ├── 36 │ │ │ ├── 1623470777.018400.html │ │ │ ├── 1623476833.027300.html │ │ │ └── 1626512522.069800.html │ │ ├── 37 │ │ │ └── 1630141411.003700.html │ │ ├── 38 │ │ │ ├── 1633252005.037900.html │ │ │ └── 1634461515.059300.html │ │ ├── 39 │ │ │ ├── 1635671572.015800.html │ │ │ └── 1637583701.031000.html │ │ ├── 40 │ │ │ └── 1642313354.005400.html │ │ ├── 42 │ │ │ ├── 1645866338.690209.html │ │ │ └── 1647161115.369759.html │ │ ├── 43 │ │ │ ├── 1647769135.646499.html │ │ │ └── 1648371827.112579.html │ │ ├── 45 │ │ │ ├── 1657357471.681299.html │ │ │ └── 1659858536.150929.html │ │ ├── 51 │ │ │ └── 1677402516.537709.html │ │ ├── 54 │ │ │ └── 1685256003.365159.html │ │ ├── 57 │ │ │ └── 1691226077.651689.html │ │ ├── 58 │ │ │ └── 1694337249.588239.html │ │ ├── 60 │ │ │ └── 1699161485.810789.html │ │ ├── 61 │ │ │ ├── 1701581105.057979.html │ │ │ └── 1701596209.153069.html │ │ ├── 62 │ │ │ ├── 1704618619.025449.html │ │ │ └── 1705827914.118109.html │ │ ├── 63 │ │ │ ├── 1706432872.760139.html │ │ │ ├── 1707038287.443729.html │ │ │ └── 1707642271.261559.html │ │ ├── 64 │ │ │ └── 1710666207.577739.html │ │ ├── 65 │ │ │ └── 1714295037.764729.html │ │ ├── 66 │ │ │ └── 1716700855.510459.html │ │ ├── 67 │ │ │ ├── 1718528538.444279.html │ │ │ └── 1720947920.925519.html │ │ ├── 68 │ │ │ ├── 1722177583.484919.html │ │ │ └── 1722766084.174739.html │ │ ├── 71 │ │ │ ├── 1731229750.605809.html │ │ │ └── 1732439360.101009.html │ │ ├── 75 │ │ │ ├── 1746346413.791119.html │ │ │ └── 1746954106.095969.html │ │ ├── 1.html │ │ ├── 10.html │ │ ├── 11.html │ │ ├── 12.html │ │ ├── 13.html │ │ ├── 14.html │ │ ├── 15.html │ │ ├── 16.html │ │ ├── 17.html │ │ ├── 18.html │ │ ├── 19.html │ │ ├── 2.html │ │ ├── 20.html │ │ ├── 21.html │ │ ├── 22.html │ │ ├── 23.html │ │ ├── 24.html │ │ ├── 25.html │ │ ├── 26.html │ │ ├── 27.html │ │ ├── 28.html │ │ ├── 29.html │ │ ├── 3.html │ │ ├── 30.html │ │ ├── 31.html │ │ ├── 32.html │ │ ├── 33.html │ │ ├── 34.html │ │ ├── 35.html │ │ ├── 36.html │ │ ├── 37.html │ │ ├── 38.html │ │ ├── 39.html │ │ ├── 4.html │ │ ├── 40.html │ │ ├── 41.html │ │ ├── 42.html │ │ ├── 43.html │ │ ├── 44.html │ │ ├── 45.html │ │ ├── 46.html │ │ ├── 47.html │ │ ├── 48.html │ │ ├── 49.html │ │ ├── 5.html │ │ ├── 50.html │ │ ├── 51.html │ │ ├── 52.html │ │ ├── 53.html │ │ ├── 54.html │ │ ├── 55.html │ │ ├── 56.html │ │ ├── 57.html │ │ ├── 58.html │ │ ├── 59.html │ │ ├── 6.html │ │ ├── 60.html │ │ ├── 61.html │ │ ├── 62.html │ │ ├── 63.html │ │ ├── 64.html │ │ ├── 65.html │ │ ├── 66.html │ │ ├── 67.html │ │ ├── 68.html │ │ ├── 69.html │ │ ├── 7.html │ │ ├── 70.html │ │ ├── 71.html │ │ ├── 72.html │ │ ├── 73.html │ │ ├── 74.html │ │ ├── 75.html │ │ ├── 76.html │ │ ├── 8.html │ │ └── 9.html │ └── GDTFWM8KX │ │ ├── 1.html │ │ ├── 2.html │ │ ├── 3.html │ │ └── 4.html ├── index.html ├── json │ ├── .groups.json │ ├── .timestamps.json │ ├── .users.json │ ├── C011X16H4TS │ │ ├── 1.json │ │ ├── 2.json │ │ └── 3.json │ ├── C014PGG641Z │ │ ├── 3 │ │ │ ├── 1648983203.439729.json │ │ │ └── 1650460004.502769.json │ │ ├── 1.json │ │ ├── 2.json │ │ ├── 3.json │ │ └── 4.json │ ├── C01LT3YTT3K │ │ ├── 1 │ │ │ ├── 1612094550.004200.json │ │ │ ├── 1612672201.005100.json │ │ │ ├── 1617338179.000200.json │ │ │ └── 1624767749.001200.json │ │ └── 1.json │ ├── C028VRTRBRT │ │ ├── 1 │ │ │ ├── 1627105018.007400.json │ │ │ └── 1627350084.025300.json │ │ └── 1.json │ ├── C4LFB6DE0 │ │ ├── 28 │ │ │ ├── 1613956587.005500.json │ │ │ ├── 1617245039.007000.json │ │ │ ├── 1618724316.011700.json │ │ │ └── 1620546311.018000.json │ │ ├── 31 │ │ │ ├── 1644881915.957309.json │ │ │ └── 1645869092.683589.json │ │ ├── 1.json │ │ ├── 10.json │ │ ├── 11.json │ │ ├── 12.json │ │ ├── 13.json │ │ ├── 14.json │ │ ├── 15.json │ │ ├── 16.json │ │ ├── 17.json │ │ ├── 18.json │ │ ├── 19.json │ │ ├── 2.json │ │ ├── 20.json │ │ ├── 21.json │ │ ├── 22.json │ │ ├── 23.json │ │ ├── 24.json │ │ ├── 25.json │ │ ├── 26.json │ │ ├── 27.json │ │ ├── 28.json │ │ ├── 29.json │ │ ├── 3.json │ │ ├── 30.json │ │ ├── 31.json │ │ ├── 4.json │ │ ├── 5.json │ │ ├── 6.json │ │ ├── 7.json │ │ ├── 8.json │ │ └── 9.json │ ├── C4M4TT8JJ │ │ ├── 86 │ │ │ ├── 1611635843.002700.json │ │ │ ├── 1612022548.006900.json │ │ │ ├── 1612468125.015700.json │ │ │ ├── 1612576852.021800.json │ │ │ └── 1612691367.028600.json │ │ ├── 87 │ │ │ ├── 1613187519.058400.json │ │ │ ├── 1613292258.064700.json │ │ │ └── 1613846879.002100.json │ │ ├── 88 │ │ │ ├── 1614305304.034000.json │ │ │ ├── 1614310203.037900.json │ │ │ ├── 1614591474.091300.json │ │ │ ├── 1615251026.000500.json │ │ │ ├── 1615295221.004700.json │ │ │ ├── 1615607158.009100.json │ │ │ ├── 1615693605.012700.json │ │ │ └── 1615854749.027500.json │ │ ├── 89 │ │ │ ├── 1616510930.011600.json │ │ │ ├── 1617327295.025100.json │ │ │ └── 1617972510.033000.json │ │ ├── 90 │ │ │ ├── 1619069649.065500.json │ │ │ ├── 1619493858.084300.json │ │ │ ├── 1619928838.094000.json │ │ │ ├── 1620029434.096200.json │ │ │ ├── 1620280883.099400.json │ │ │ ├── 1621513892.003700.json │ │ │ ├── 1621994779.009200.json │ │ │ ├── 1622047804.013300.json │ │ │ └── 1622371401.016400.json │ │ ├── 91 │ │ │ ├── 1622820046.019800.json │ │ │ ├── 1623722353.041800.json │ │ │ ├── 1624987289.061200.json │ │ │ ├── 1624992854.062200.json │ │ │ ├── 1625856353.075000.json │ │ │ ├── 1625974549.079200.json │ │ │ └── 1625976050.082000.json │ │ ├── 92 │ │ │ ├── 1626200716.092000.json │ │ │ ├── 1627643113.002900.json │ │ │ ├── 1627703177.006500.json │ │ │ ├── 1629156000.020400.json │ │ │ ├── 1629466360.028800.json │ │ │ ├── 1629545174.029600.json │ │ │ └── 1629685901.031100.json │ │ ├── 93 │ │ │ ├── 1630667956.003500.json │ │ │ ├── 1632365570.023900.json │ │ │ ├── 1633166027.027900.json │ │ │ └── 1634264083.037100.json │ │ ├── 94 │ │ │ ├── 1635521085.016200.json │ │ │ ├── 1635650900.021400.json │ │ │ ├── 1635759029.026100.json │ │ │ ├── 1636293816.041900.json │ │ │ ├── 1636342237.050300.json │ │ │ ├── 1636543001.068700.json │ │ │ ├── 1636593820.071200.json │ │ │ └── 1636619243.077600.json │ │ ├── 95 │ │ │ ├── 1637028729.092700.json │ │ │ ├── 1637063234.095600.json │ │ │ ├── 1637287667.115800.json │ │ │ ├── 1637317607.124900.json │ │ │ ├── 1637972744.144700.json │ │ │ ├── 1638260974.162600.json │ │ │ ├── 1639396854.212900.json │ │ │ ├── 1639703712.215900.json │ │ │ └── 1639710877.216400.json │ │ ├── 96 │ │ │ ├── 1639807805.218100.json │ │ │ ├── 1639981418.221400.json │ │ │ ├── 1641050509.235000.json │ │ │ ├── 1642126327.007000.json │ │ │ └── 1644812798.129959.json │ │ ├── 97 │ │ │ ├── 1645053430.368109.json │ │ │ ├── 1645872077.736799.json │ │ │ ├── 1646324302.253439.json │ │ │ ├── 1646349654.474939.json │ │ │ ├── 1647257957.991509.json │ │ │ └── 1647925150.102249.json │ │ ├── 98 │ │ │ ├── 1649412137.652789.json │ │ │ ├── 1650355795.738429.json │ │ │ ├── 1650374515.243699.json │ │ │ ├── 1651023719.425839.json │ │ │ ├── 1651148345.393959.json │ │ │ ├── 1651799712.380809.json │ │ │ └── 1652332716.589039.json │ │ ├── 99 │ │ │ ├── 1654178448.929169.json │ │ │ ├── 1654647023.217789.json │ │ │ ├── 1656898367.069619.json │ │ │ └── 1658186144.880249.json │ │ ├── 100 │ │ │ ├── 1660466957.928909.json │ │ │ ├── 1662902269.344689.json │ │ │ ├── 1663206589.511039.json │ │ │ └── 1663331957.528359.json │ │ ├── 101 │ │ │ ├── 1668735687.824279.json │ │ │ ├── 1669288425.378439.json │ │ │ ├── 1669864039.382499.json │ │ │ ├── 1671012275.019769.json │ │ │ ├── 1671850321.263199.json │ │ │ ├── 1672887665.396769.json │ │ │ ├── 1673576665.585869.json │ │ │ └── 1674642458.472019.json │ │ ├── 102 │ │ │ ├── 1676195913.344389.json │ │ │ ├── 1676274963.934119.json │ │ │ ├── 1678542309.366269.json │ │ │ ├── 1678587612.874699.json │ │ │ ├── 1680670312.999969.json │ │ │ ├── 1680693382.818309.json │ │ │ └── 1681355182.628729.json │ │ ├── 103 │ │ │ ├── 1685234164.446779.json │ │ │ ├── 1686960130.612459.json │ │ │ ├── 1687038464.141409.json │ │ │ ├── 1692159038.525649.json │ │ │ └── 1692276375.313729.json │ │ ├── 104 │ │ │ ├── 1695683903.592829.json │ │ │ ├── 1695776800.610899.json │ │ │ ├── 1696131275.202069.json │ │ │ ├── 1696652143.792849.json │ │ │ ├── 1697079483.233489.json │ │ │ ├── 1697370997.794769.json │ │ │ ├── 1698326745.756449.json │ │ │ ├── 1698812500.367789.json │ │ │ ├── 1700012206.547009.json │ │ │ └── 1701095236.479149.json │ │ ├── 105 │ │ │ ├── 1701534202.711679.json │ │ │ ├── 1702562421.026439.json │ │ │ ├── 1705977194.178089.json │ │ │ └── 1709162962.604589.json │ │ ├── 106 │ │ │ ├── 1715401346.428539.json │ │ │ ├── 1716465336.649259.json │ │ │ ├── 1718602264.313349.json │ │ │ ├── 1720046658.241399.json │ │ │ ├── 1729153613.735389.json │ │ │ └── 1732520876.559579.json │ │ ├── 107 │ │ │ ├── 1744697440.723989.json │ │ │ └── 1746692008.946769.json │ │ ├── 1.json │ │ ├── 10.json │ │ ├── 100.json │ │ ├── 101.json │ │ ├── 102.json │ │ ├── 103.json │ │ ├── 104.json │ │ ├── 105.json │ │ ├── 106.json │ │ ├── 107.json │ │ ├── 11.json │ │ ├── 12.json │ │ ├── 13.json │ │ ├── 14.json │ │ ├── 15.json │ │ ├── 16.json │ │ ├── 17.json │ │ ├── 18.json │ │ ├── 19.json │ │ ├── 2.json │ │ ├── 20.json │ │ ├── 21.json │ │ ├── 22.json │ │ ├── 23.json │ │ ├── 24.json │ │ ├── 25.json │ │ ├── 26.json │ │ ├── 27.json │ │ ├── 28.json │ │ ├── 29.json │ │ ├── 3.json │ │ ├── 30.json │ │ ├── 31.json │ │ ├── 32.json │ │ ├── 33.json │ │ ├── 34.json │ │ ├── 35.json │ │ ├── 36.json │ │ ├── 37.json │ │ ├── 38.json │ │ ├── 39.json │ │ ├── 4.json │ │ ├── 40.json │ │ ├── 41.json │ │ ├── 42.json │ │ ├── 43.json │ │ ├── 44.json │ │ ├── 45.json │ │ ├── 46.json │ │ ├── 47.json │ │ ├── 48.json │ │ ├── 49.json │ │ ├── 5.json │ │ ├── 50.json │ │ ├── 51.json │ │ ├── 52.json │ │ ├── 53.json │ │ ├── 54.json │ │ ├── 55.json │ │ ├── 56.json │ │ ├── 57.json │ │ ├── 58.json │ │ ├── 59.json │ │ ├── 6.json │ │ ├── 60.json │ │ ├── 61.json │ │ ├── 62.json │ │ ├── 63.json │ │ ├── 64.json │ │ ├── 65.json │ │ ├── 66.json │ │ ├── 67.json │ │ ├── 68.json │ │ ├── 69.json │ │ ├── 7.json │ │ ├── 70.json │ │ ├── 71.json │ │ ├── 72.json │ │ ├── 73.json │ │ ├── 74.json │ │ ├── 75.json │ │ ├── 76.json │ │ ├── 77.json │ │ ├── 78.json │ │ ├── 79.json │ │ ├── 8.json │ │ ├── 80.json │ │ ├── 81.json │ │ ├── 82.json │ │ ├── 83.json │ │ ├── 84.json │ │ ├── 85.json │ │ ├── 86.json │ │ ├── 87.json │ │ ├── 88.json │ │ ├── 89.json │ │ ├── 9.json │ │ ├── 90.json │ │ ├── 91.json │ │ ├── 92.json │ │ ├── 93.json │ │ ├── 94.json │ │ ├── 95.json │ │ ├── 96.json │ │ ├── 97.json │ │ ├── 98.json │ │ └── 99.json │ ├── C4P499EPQ │ │ └── 1.json │ ├── C5666B6BB │ │ ├── 95 │ │ │ ├── 1611252714.001300.json │ │ │ ├── 1612965162.010500.json │ │ │ └── 1614678356.001700.json │ │ ├── 96 │ │ │ ├── 1615609238.006700.json │ │ │ ├── 1615610001.014200.json │ │ │ ├── 1615610091.015600.json │ │ │ ├── 1615610619.017400.json │ │ │ ├── 1615612695.020100.json │ │ │ ├── 1616317363.001400.json │ │ │ ├── 1616399255.005500.json │ │ │ ├── 1616685563.010700.json │ │ │ ├── 1618213908.033500.json │ │ │ ├── 1618539160.036900.json │ │ │ ├── 1618637380.047800.json │ │ │ ├── 1618734832.054000.json │ │ │ ├── 1618901141.068300.json │ │ │ ├── 1619067613.071300.json │ │ │ ├── 1619331178.072300.json │ │ │ ├── 1619698031.076900.json │ │ │ └── 1619747032.077800.json │ │ ├── 97 │ │ │ ├── 1620365648.083900.json │ │ │ ├── 1620880384.089100.json │ │ │ ├── 1621162561.092000.json │ │ │ ├── 1621326587.003000.json │ │ │ ├── 1622361142.005600.json │ │ │ ├── 1622534738.009000.json │ │ │ ├── 1622560579.012400.json │ │ │ ├── 1623111994.019500.json │ │ │ ├── 1623512883.032000.json │ │ │ ├── 1623515683.032900.json │ │ │ ├── 1623853793.049300.json │ │ │ ├── 1625119094.074300.json │ │ │ ├── 1625535613.079800.json │ │ │ └── 1626273407.002900.json │ │ ├── 98 │ │ │ ├── 1626746071.010100.json │ │ │ ├── 1627983207.003000.json │ │ │ ├── 1629447450.023800.json │ │ │ ├── 1630956334.008400.json │ │ │ ├── 1631807873.021100.json │ │ │ ├── 1632012847.029400.json │ │ │ ├── 1632032922.030800.json │ │ │ ├── 1632872950.049700.json │ │ │ └── 1633323700.053100.json │ │ ├── 99 │ │ │ ├── 1635547410.006900.json │ │ │ ├── 1635560352.013800.json │ │ │ ├── 1635915074.018300.json │ │ │ ├── 1636073332.020400.json │ │ │ ├── 1636443228.023600.json │ │ │ ├── 1636592171.025900.json │ │ │ ├── 1636653798.030500.json │ │ │ ├── 1636764294.036400.json │ │ │ ├── 1637734725.045200.json │ │ │ ├── 1638331843.054000.json │ │ │ ├── 1638354464.055200.json │ │ │ ├── 1640255700.059200.json │ │ │ ├── 1641096858.071300.json │ │ │ ├── 1641713631.001900.json │ │ │ ├── 1641837822.005100.json │ │ │ ├── 1642247848.053400.json │ │ │ ├── 1642759812.057700.json │ │ │ └── 1642759949.058200.json │ │ ├── 100 │ │ │ ├── 1643271332.584399.json │ │ │ ├── 1643415225.816389.json │ │ │ ├── 1644212527.932769.json │ │ │ ├── 1645288903.764169.json │ │ │ ├── 1645456116.640939.json │ │ │ ├── 1645494253.870219.json │ │ │ ├── 1645931207.098899.json │ │ │ ├── 1646549201.347189.json │ │ │ ├── 1646652162.319549.json │ │ │ ├── 1647618098.698709.json │ │ │ ├── 1647935277.605289.json │ │ │ ├── 1647940384.012959.json │ │ │ ├── 1647961549.509119.json │ │ │ ├── 1650626935.471989.json │ │ │ └── 1651383744.948649.json │ │ ├── 101 │ │ │ ├── 1652233415.103749.json │ │ │ ├── 1653473368.183629.json │ │ │ ├── 1653628771.280259.json │ │ │ ├── 1653890195.754989.json │ │ │ ├── 1654823514.643629.json │ │ │ ├── 1656521779.943699.json │ │ │ ├── 1657073409.480229.json │ │ │ ├── 1658582996.123349.json │ │ │ ├── 1659000652.702649.json │ │ │ └── 1659398221.402629.json │ │ ├── 102 │ │ │ ├── 1661954651.345509.json │ │ │ ├── 1662340285.680249.json │ │ │ ├── 1662712288.672419.json │ │ │ ├── 1662787201.859309.json │ │ │ ├── 1663570888.297569.json │ │ │ ├── 1663934840.110889.json │ │ │ ├── 1666917551.484099.json │ │ │ ├── 1667543255.892449.json │ │ │ ├── 1667657390.250289.json │ │ │ ├── 1667790807.799879.json │ │ │ ├── 1667909931.978299.json │ │ │ ├── 1668434284.691869.json │ │ │ ├── 1669386398.293779.json │ │ │ ├── 1671806939.647319.json │ │ │ ├── 1673006930.100339.json │ │ │ └── 1673835393.782529.json │ │ ├── 103 │ │ │ ├── 1674372468.666109.json │ │ │ ├── 1674613262.313509.json │ │ │ ├── 1675566381.795629.json │ │ │ ├── 1675937034.855919.json │ │ │ ├── 1676619242.957009.json │ │ │ ├── 1676844723.772979.json │ │ │ ├── 1676912908.924149.json │ │ │ ├── 1677283347.252899.json │ │ │ ├── 1678031344.687819.json │ │ │ ├── 1678493250.805059.json │ │ │ ├── 1680184874.825459.json │ │ │ ├── 1680423862.784269.json │ │ │ ├── 1681290375.582189.json │ │ │ ├── 1682511649.072529.json │ │ │ ├── 1682577714.625679.json │ │ │ ├── 1683290439.834829.json │ │ │ ├── 1684024800.366699.json │ │ │ └── 1684652284.419089.json │ │ ├── 104 │ │ │ ├── 1686190934.052419.json │ │ │ ├── 1686720298.292579.json │ │ │ ├── 1687240914.968079.json │ │ │ ├── 1687321140.257329.json │ │ │ ├── 1687643826.871559.json │ │ │ ├── 1688415525.784589.json │ │ │ ├── 1689048948.519879.json │ │ │ ├── 1690112065.483659.json │ │ │ ├── 1692450923.172359.json │ │ │ ├── 1692784236.307109.json │ │ │ ├── 1692853327.298529.json │ │ │ ├── 1695261242.484609.json │ │ │ ├── 1695954019.278299.json │ │ │ ├── 1696137519.721689.json │ │ │ ├── 1696492633.425049.json │ │ │ ├── 1699051412.441929.json │ │ │ └── 1699181970.294899.json │ │ ├── 105 │ │ │ ├── 1699850628.377719.json │ │ │ ├── 1701180180.539649.json │ │ │ ├── 1701873046.740899.json │ │ │ ├── 1703649203.739559.json │ │ │ ├── 1706051135.662729.json │ │ │ ├── 1709772141.128369.json │ │ │ ├── 1710131564.861859.json │ │ │ ├── 1712532865.503449.json │ │ │ ├── 1712915662.893909.json │ │ │ ├── 1714942645.818289.json │ │ │ └── 1715258221.498639.json │ │ ├── 106 │ │ │ ├── 1717642646.503059.json │ │ │ ├── 1722671507.590769.json │ │ │ ├── 1729153166.017339.json │ │ │ ├── 1732073862.438399.json │ │ │ ├── 1733591002.918799.json │ │ │ ├── 1735318729.005749.json │ │ │ ├── 1736686167.511779.json │ │ │ └── 1736686684.184439.json │ │ ├── 107 │ │ │ └── 1738067646.575529.json │ │ ├── 1.json │ │ ├── 10.json │ │ ├── 100.json │ │ ├── 101.json │ │ ├── 102.json │ │ ├── 103.json │ │ ├── 104.json │ │ ├── 105.json │ │ ├── 106.json │ │ ├── 107.json │ │ ├── 11.json │ │ ├── 12.json │ │ ├── 13.json │ │ ├── 14.json │ │ ├── 15.json │ │ ├── 16.json │ │ ├── 17.json │ │ ├── 18.json │ │ ├── 19.json │ │ ├── 2.json │ │ ├── 20.json │ │ ├── 21.json │ │ ├── 22.json │ │ ├── 23.json │ │ ├── 24.json │ │ ├── 25.json │ │ ├── 26.json │ │ ├── 27.json │ │ ├── 28.json │ │ ├── 29.json │ │ ├── 3.json │ │ ├── 30.json │ │ ├── 31.json │ │ ├── 32.json │ │ ├── 33.json │ │ ├── 34.json │ │ ├── 35.json │ │ ├── 36.json │ │ ├── 37.json │ │ ├── 38.json │ │ ├── 39.json │ │ ├── 4.json │ │ ├── 40.json │ │ ├── 41.json │ │ ├── 42.json │ │ ├── 43.json │ │ ├── 44.json │ │ ├── 45.json │ │ ├── 46.json │ │ ├── 47.json │ │ ├── 48.json │ │ ├── 49.json │ │ ├── 5.json │ │ ├── 50.json │ │ ├── 51.json │ │ ├── 52.json │ │ ├── 53.json │ │ ├── 54.json │ │ ├── 55.json │ │ ├── 56.json │ │ ├── 57.json │ │ ├── 58.json │ │ ├── 59.json │ │ ├── 6.json │ │ ├── 60.json │ │ ├── 61.json │ │ ├── 62.json │ │ ├── 63.json │ │ ├── 64.json │ │ ├── 65.json │ │ ├── 66.json │ │ ├── 67.json │ │ ├── 68.json │ │ ├── 69.json │ │ ├── 7.json │ │ ├── 70.json │ │ ├── 71.json │ │ ├── 72.json │ │ ├── 73.json │ │ ├── 74.json │ │ ├── 75.json │ │ ├── 76.json │ │ ├── 77.json │ │ ├── 78.json │ │ ├── 79.json │ │ ├── 8.json │ │ ├── 80.json │ │ ├── 81.json │ │ ├── 82.json │ │ ├── 83.json │ │ ├── 84.json │ │ ├── 85.json │ │ ├── 86.json │ │ ├── 87.json │ │ ├── 88.json │ │ ├── 89.json │ │ ├── 9.json │ │ ├── 90.json │ │ ├── 91.json │ │ ├── 92.json │ │ ├── 93.json │ │ ├── 94.json │ │ ├── 95.json │ │ ├── 96.json │ │ ├── 97.json │ │ ├── 98.json │ │ └── 99.json │ ├── C7Y71415W │ │ ├── 11 │ │ │ ├── 1633320879.001200.json │ │ │ ├── 1636878256.005900.json │ │ │ ├── 1639147160.009500.json │ │ │ ├── 1664006167.650029.json │ │ │ ├── 1665820771.979199.json │ │ │ ├── 1667832514.002769.json │ │ │ ├── 1671199553.369319.json │ │ │ └── 1673619506.214469.json │ │ ├── 1.json │ │ ├── 10.json │ │ ├── 11.json │ │ ├── 12.json │ │ ├── 2.json │ │ ├── 3.json │ │ ├── 4.json │ │ ├── 5.json │ │ ├── 6.json │ │ ├── 7.json │ │ ├── 8.json │ │ └── 9.json │ ├── C8KBGEBR7 │ │ ├── 1.json │ │ ├── 2.json │ │ ├── 3.json │ │ ├── 4.json │ │ └── 5.json │ ├── C8R0H137H │ │ ├── 1.json │ │ ├── 2.json │ │ └── 3.json │ ├── CA5H65L2J │ │ ├── 1 │ │ │ ├── 1615369450.008900.json │ │ │ └── 1615438176.013600.json │ │ └── 1.json │ ├── CAXQ09PN2 │ │ ├── 26 │ │ │ ├── 1619414865.004700.json │ │ │ ├── 1620189035.017400.json │ │ │ ├── 1620399619.019300.json │ │ │ ├── 1621382473.011600.json │ │ │ ├── 1621864964.014400.json │ │ │ ├── 1622348400.017900.json │ │ │ └── 1622357705.020700.json │ │ ├── 27 │ │ │ ├── 1623503323.031300.json │ │ │ ├── 1625969225.033400.json │ │ │ ├── 1626066744.034500.json │ │ │ ├── 1630394349.000900.json │ │ │ ├── 1633084774.004900.json │ │ │ ├── 1633084997.007600.json │ │ │ ├── 1633163583.017000.json │ │ │ ├── 1633525846.020000.json │ │ │ └── 1634042674.022100.json │ │ ├── 1.json │ │ ├── 10.json │ │ ├── 11.json │ │ ├── 12.json │ │ ├── 13.json │ │ ├── 14.json │ │ ├── 15.json │ │ ├── 16.json │ │ ├── 17.json │ │ ├── 18.json │ │ ├── 19.json │ │ ├── 2.json │ │ ├── 20.json │ │ ├── 21.json │ │ ├── 22.json │ │ ├── 23.json │ │ ├── 24.json │ │ ├── 25.json │ │ ├── 26.json │ │ ├── 27.json │ │ ├── 28.json │ │ ├── 3.json │ │ ├── 4.json │ │ ├── 5.json │ │ ├── 6.json │ │ ├── 7.json │ │ ├── 8.json │ │ └── 9.json │ ├── CCYF8H43A │ │ ├── 2 │ │ │ └── 1622548358.000900.json │ │ ├── 3 │ │ │ ├── 1633146532.003400.json │ │ │ └── 1701664571.387019.json │ │ ├── 1.json │ │ ├── 2.json │ │ ├── 3.json │ │ └── 4.json │ ├── CD87P78HF │ │ ├── 9 │ │ │ └── 1668925818.088229.json │ │ ├── 1.json │ │ ├── 2.json │ │ ├── 3.json │ │ ├── 4.json │ │ ├── 5.json │ │ ├── 6.json │ │ ├── 7.json │ │ ├── 8.json │ │ └── 9.json │ ├── CE368SB5G │ │ ├── 1.json │ │ ├── 2.json │ │ ├── 3.json │ │ ├── 4.json │ │ ├── 5.json │ │ └── 6.json │ ├── CGT2Q4KHP │ │ └── 1.json │ ├── CL3AXB1AL │ │ ├── 6 │ │ │ ├── 1674275065.035079.json │ │ │ ├── 1674359451.004789.json │ │ │ ├── 1675906753.041469.json │ │ │ └── 1679122969.715459.json │ │ ├── 7 │ │ │ ├── 1680713459.208939.json │ │ │ ├── 1680837944.442169.json │ │ │ ├── 1680881517.727479.json │ │ │ ├── 1680882594.428769.json │ │ │ ├── 1680911991.248749.json │ │ │ ├── 1680914067.289309.json │ │ │ ├── 1680922590.107489.json │ │ │ └── 1680941450.522769.json │ │ ├── 8 │ │ │ ├── 1682470671.109409.json │ │ │ ├── 1682510145.007589.json │ │ │ ├── 1682513764.246829.json │ │ │ ├── 1682600591.717579.json │ │ │ ├── 1685765893.274489.json │ │ │ ├── 1686921303.827259.json │ │ │ ├── 1686957789.585189.json │ │ │ ├── 1687045146.684209.json │ │ │ ├── 1687991585.429139.json │ │ │ └── 1691323640.069119.json │ │ ├── 1.json │ │ ├── 2.json │ │ ├── 3.json │ │ ├── 4.json │ │ ├── 5.json │ │ ├── 6.json │ │ ├── 7.json │ │ ├── 8.json │ │ └── 9.json │ ├── CM4J6EDHR │ │ ├── 1.json │ │ ├── 2.json │ │ └── 3.json │ ├── CN3P057K8 │ │ ├── 1.json │ │ ├── 2.json │ │ ├── 3.json │ │ └── 4.json │ ├── CR2TETE5R │ │ ├── 14 │ │ │ ├── 1611579200.002500.json │ │ │ ├── 1612319768.014700.json │ │ │ ├── 1613272635.018000.json │ │ │ ├── 1613481197.020800.json │ │ │ ├── 1613583594.024800.json │ │ │ ├── 1613647033.026500.json │ │ │ ├── 1613882449.004500.json │ │ │ └── 1614772155.014500.json │ │ ├── 15 │ │ │ ├── 1615368796.005200.json │ │ │ ├── 1615617416.010400.json │ │ │ ├── 1616067239.001400.json │ │ │ ├── 1616145276.006000.json │ │ │ ├── 1616146676.007800.json │ │ │ ├── 1617038731.024400.json │ │ │ ├── 1617612652.028900.json │ │ │ └── 1618840415.042600.json │ │ ├── 16 │ │ │ ├── 1621822287.046300.json │ │ │ ├── 1622540988.054000.json │ │ │ ├── 1622971007.062500.json │ │ │ ├── 1624545509.073700.json │ │ │ ├── 1624705846.077200.json │ │ │ ├── 1625121147.086400.json │ │ │ ├── 1625325113.093000.json │ │ │ ├── 1625704875.094700.json │ │ │ ├── 1625740361.095600.json │ │ │ └── 1625874754.096700.json │ │ ├── 17 │ │ │ ├── 1625913127.099100.json │ │ │ ├── 1626265316.107100.json │ │ │ ├── 1626391155.119100.json │ │ │ ├── 1626426545.120400.json │ │ │ ├── 1626428575.121500.json │ │ │ ├── 1626432250.123200.json │ │ │ ├── 1626482136.131300.json │ │ │ ├── 1626581730.143100.json │ │ │ ├── 1626591322.147600.json │ │ │ ├── 1626699311.153800.json │ │ │ ├── 1626701008.155000.json │ │ │ ├── 1626719646.157000.json │ │ │ ├── 1626783472.161000.json │ │ │ ├── 1626814415.163700.json │ │ │ ├── 1626928031.165900.json │ │ │ ├── 1627106280.167900.json │ │ │ ├── 1629383380.007800.json │ │ │ ├── 1629635230.013800.json │ │ │ ├── 1629865592.018300.json │ │ │ └── 1630029104.010700.json │ │ ├── 18 │ │ │ ├── 1631596292.017900.json │ │ │ ├── 1631755708.021300.json │ │ │ ├── 1632232971.029900.json │ │ │ ├── 1632241964.077600.json │ │ │ ├── 1632560266.086500.json │ │ │ ├── 1632963970.095800.json │ │ │ ├── 1633304061.100200.json │ │ │ ├── 1634452624.126300.json │ │ │ ├── 1634872946.009000.json │ │ │ ├── 1635569517.012100.json │ │ │ ├── 1636821329.023600.json │ │ │ ├── 1636885345.028600.json │ │ │ ├── 1636987155.030700.json │ │ │ └── 1637117405.037900.json │ │ ├── 19 │ │ │ ├── 1637817370.043200.json │ │ │ ├── 1638018727.046600.json │ │ │ ├── 1638020585.048800.json │ │ │ ├── 1638431774.056900.json │ │ │ ├── 1638601966.063500.json │ │ │ ├── 1639027158.069100.json │ │ │ ├── 1639064116.075200.json │ │ │ ├── 1639932574.077200.json │ │ │ ├── 1640444272.097200.json │ │ │ ├── 1640875616.107200.json │ │ │ ├── 1641006950.108400.json │ │ │ ├── 1641642723.002800.json │ │ │ ├── 1641657241.003000.json │ │ │ ├── 1641729546.006600.json │ │ │ ├── 1641745084.012100.json │ │ │ ├── 1641915779.016200.json │ │ │ ├── 1642139145.020800.json │ │ │ ├── 1642429110.032900.json │ │ │ ├── 1643019666.037900.json │ │ │ └── 1643286256.145989.json │ │ ├── 20 │ │ │ ├── 1644038215.253089.json │ │ │ ├── 1645322387.120949.json │ │ │ ├── 1645591979.557769.json │ │ │ ├── 1646663320.370199.json │ │ │ ├── 1649116984.990659.json │ │ │ ├── 1649171768.830059.json │ │ │ ├── 1652326651.979459.json │ │ │ └── 1653235507.627809.json │ │ ├── 21 │ │ │ ├── 1653569189.154239.json │ │ │ ├── 1653782439.713629.json │ │ │ ├── 1654687913.448859.json │ │ │ ├── 1655103639.443429.json │ │ │ ├── 1655126132.185639.json │ │ │ ├── 1655215674.852489.json │ │ │ ├── 1655816541.358789.json │ │ │ ├── 1658062508.826259.json │ │ │ ├── 1658247261.191509.json │ │ │ ├── 1658526015.580989.json │ │ │ ├── 1659588829.749109.json │ │ │ ├── 1660043376.546839.json │ │ │ ├── 1660393980.252719.json │ │ │ ├── 1662857005.674419.json │ │ │ └── 1663248758.261049.json │ │ ├── 22 │ │ │ ├── 1665737308.311929.json │ │ │ ├── 1665918777.693479.json │ │ │ ├── 1666062034.575279.json │ │ │ ├── 1667135853.108099.json │ │ │ ├── 1667222331.007019.json │ │ │ ├── 1667297024.821029.json │ │ │ ├── 1668151362.719499.json │ │ │ ├── 1669812950.225089.json │ │ │ ├── 1671020744.415489.json │ │ │ ├── 1671100252.402679.json │ │ │ ├── 1671421718.692919.json │ │ │ └── 1672118439.693829.json │ │ ├── 23 │ │ │ ├── 1681055436.507129.json │ │ │ ├── 1681353081.736949.json │ │ │ ├── 1682068157.989739.json │ │ │ ├── 1682951128.365409.json │ │ │ └── 1683303647.855859.json │ │ ├── 24 │ │ │ ├── 1695955485.899049.json │ │ │ ├── 1700060589.508599.json │ │ │ ├── 1710846238.136989.json │ │ │ └── 1714616748.587099.json │ │ ├── 25 │ │ │ ├── 1717302958.545539.json │ │ │ ├── 1718420231.272899.json │ │ │ ├── 1721482821.240169.json │ │ │ ├── 1721621462.260059.json │ │ │ ├── 1722411011.228429.json │ │ │ ├── 1723043199.659059.json │ │ │ ├── 1723191142.554709.json │ │ │ ├── 1723604741.629259.json │ │ │ ├── 1723870199.257579.json │ │ │ ├── 1724382191.158669.json │ │ │ ├── 1725332548.796509.json │ │ │ ├── 1726908202.015919.json │ │ │ ├── 1728442764.500619.json │ │ │ └── 1729755512.540579.json │ │ ├── 26 │ │ │ ├── 1733269639.986039.json │ │ │ └── 1735495331.934659.json │ │ ├── 1.json │ │ ├── 10.json │ │ ├── 11.json │ │ ├── 12.json │ │ ├── 13.json │ │ ├── 14.json │ │ ├── 15.json │ │ ├── 16.json │ │ ├── 17.json │ │ ├── 18.json │ │ ├── 19.json │ │ ├── 2.json │ │ ├── 20.json │ │ ├── 21.json │ │ ├── 22.json │ │ ├── 23.json │ │ ├── 24.json │ │ ├── 25.json │ │ ├── 26.json │ │ ├── 3.json │ │ ├── 4.json │ │ ├── 5.json │ │ ├── 6.json │ │ ├── 7.json │ │ ├── 8.json │ │ └── 9.json │ ├── CR4U9PBLL │ │ ├── 3 │ │ │ └── 1667265132.796109.json │ │ ├── 1.json │ │ ├── 2.json │ │ └── 3.json │ ├── CUPBC8WCE │ │ ├── 30 │ │ │ ├── 1611378500.009300.json │ │ │ ├── 1611379058.011000.json │ │ │ └── 1611403875.022800.json │ │ ├── 31 │ │ │ ├── 1612056533.043800.json │ │ │ └── 1612603058.075800.json │ │ ├── 32 │ │ │ ├── 1613294088.093400.json │ │ │ ├── 1613297397.094300.json │ │ │ ├── 1613793888.001900.json │ │ │ ├── 1614416432.007400.json │ │ │ └── 1615107648.030300.json │ │ ├── 33 │ │ │ └── 1615626020.064800.json │ │ ├── 34 │ │ │ └── 1618131754.059200.json │ │ ├── 35 │ │ │ ├── 1619859762.084500.json │ │ │ ├── 1620533060.088000.json │ │ │ └── 1621675472.005900.json │ │ ├── 36 │ │ │ ├── 1623470777.018400.json │ │ │ ├── 1623476833.027300.json │ │ │ └── 1626512522.069800.json │ │ ├── 37 │ │ │ └── 1630141411.003700.json │ │ ├── 38 │ │ │ ├── 1633252005.037900.json │ │ │ └── 1634461515.059300.json │ │ ├── 39 │ │ │ ├── 1635671572.015800.json │ │ │ └── 1637583701.031000.json │ │ ├── 40 │ │ │ └── 1642313354.005400.json │ │ ├── 42 │ │ │ ├── 1645866338.690209.json │ │ │ └── 1647161115.369759.json │ │ ├── 43 │ │ │ ├── 1647769135.646499.json │ │ │ └── 1648371827.112579.json │ │ ├── 45 │ │ │ ├── 1657357471.681299.json │ │ │ └── 1659858536.150929.json │ │ ├── 51 │ │ │ └── 1677402516.537709.json │ │ ├── 54 │ │ │ └── 1685256003.365159.json │ │ ├── 57 │ │ │ └── 1691226077.651689.json │ │ ├── 58 │ │ │ └── 1694337249.588239.json │ │ ├── 60 │ │ │ └── 1699161485.810789.json │ │ ├── 61 │ │ │ ├── 1701581105.057979.json │ │ │ └── 1701596209.153069.json │ │ ├── 62 │ │ │ ├── 1704618619.025449.json │ │ │ └── 1705827914.118109.json │ │ ├── 63 │ │ │ ├── 1706432872.760139.json │ │ │ ├── 1707038287.443729.json │ │ │ └── 1707642271.261559.json │ │ ├── 64 │ │ │ └── 1710666207.577739.json │ │ ├── 65 │ │ │ └── 1714295037.764729.json │ │ ├── 66 │ │ │ └── 1716700855.510459.json │ │ ├── 67 │ │ │ ├── 1718528538.444279.json │ │ │ └── 1720947920.925519.json │ │ ├── 68 │ │ │ ├── 1722177583.484919.json │ │ │ └── 1722766084.174739.json │ │ ├── 71 │ │ │ ├── 1731229750.605809.json │ │ │ └── 1732439360.101009.json │ │ ├── 75 │ │ │ ├── 1746346413.791119.json │ │ │ └── 1746954106.095969.json │ │ ├── 1.json │ │ ├── 10.json │ │ ├── 11.json │ │ ├── 12.json │ │ ├── 13.json │ │ ├── 14.json │ │ ├── 15.json │ │ ├── 16.json │ │ ├── 17.json │ │ ├── 18.json │ │ ├── 19.json │ │ ├── 2.json │ │ ├── 20.json │ │ ├── 21.json │ │ ├── 22.json │ │ ├── 23.json │ │ ├── 24.json │ │ ├── 25.json │ │ ├── 26.json │ │ ├── 27.json │ │ ├── 28.json │ │ ├── 29.json │ │ ├── 3.json │ │ ├── 30.json │ │ ├── 31.json │ │ ├── 32.json │ │ ├── 33.json │ │ ├── 34.json │ │ ├── 35.json │ │ ├── 36.json │ │ ├── 37.json │ │ ├── 38.json │ │ ├── 39.json │ │ ├── 4.json │ │ ├── 40.json │ │ ├── 41.json │ │ ├── 42.json │ │ ├── 43.json │ │ ├── 44.json │ │ ├── 45.json │ │ ├── 46.json │ │ ├── 47.json │ │ ├── 48.json │ │ ├── 49.json │ │ ├── 5.json │ │ ├── 50.json │ │ ├── 51.json │ │ ├── 52.json │ │ ├── 53.json │ │ ├── 54.json │ │ ├── 55.json │ │ ├── 56.json │ │ ├── 57.json │ │ ├── 58.json │ │ ├── 59.json │ │ ├── 6.json │ │ ├── 60.json │ │ ├── 61.json │ │ ├── 62.json │ │ ├── 63.json │ │ ├── 64.json │ │ ├── 65.json │ │ ├── 66.json │ │ ├── 67.json │ │ ├── 68.json │ │ ├── 69.json │ │ ├── 7.json │ │ ├── 70.json │ │ ├── 71.json │ │ ├── 72.json │ │ ├── 73.json │ │ ├── 74.json │ │ ├── 75.json │ │ ├── 76.json │ │ ├── 8.json │ │ └── 9.json │ └── GDTFWM8KX │ │ ├── 1.json │ │ ├── 2.json │ │ ├── 3.json │ │ └── 4.json ├── main.css └── templates │ ├── index.mustache.html │ ├── messages.mustache.html │ └── thread.mustache.html ├── run.sample.sh ├── script └── temp │ └── SortJson.hs ├── slack-log.cabal ├── slack-log.yaml ├── src ├── SlackLog │ ├── Duration.hs │ ├── Html.hs │ ├── Pagination.hs │ ├── Replies.hs │ ├── Types.hs │ └── Util.hs └── Web │ └── Slack │ └── Instances.hs ├── stack.yaml ├── stack.yaml.lock ├── templates ├── index.mustache.html ├── messages.mustache.html └── thread.mustache.html └── test ├── SlackLog ├── DurationSpec.hs ├── HtmlSpec.hs ├── PaginationSpec.hs └── RepliesSpec.hs ├── Spec.hs ├── Web └── Slack │ └── InstancesSpec.hs └── assets ├── .config.json ├── .groups.json ├── .timestamps.json ├── .users.json ├── expected-index.html ├── expected-messages.html ├── expected-replies.html └── json ├── C4M4TT8AA ├── 1 │ ├── 1547694882.115200.json │ └── 1547694883.115200.json ├── 2 │ └── 1547694884.115200.json ├── 1.json └── 2.json └── C4M4TT8JJ ├── 35 └── 1547694882.115200.json └── 35.json /.gitignore: -------------------------------------------------------------------------------- 1 | *.exe 2 | *.o 3 | *.hi 4 | .stack-work/ 5 | 6 | run.bat 7 | run.sh 8 | -------------------------------------------------------------------------------- /ChangeLog.md: -------------------------------------------------------------------------------- 1 | # Changelog for slack-log 2 | 3 | ## Unreleased changes 4 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2018 Japan Haskell User Group 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. 14 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # slack-log 2 | -------------------------------------------------------------------------------- /Setup.hs: -------------------------------------------------------------------------------- 1 | import Distribution.Simple 2 | main = defaultMain 3 | -------------------------------------------------------------------------------- /docs/json/.groups.json: -------------------------------------------------------------------------------- 1 | { 2 | "GDTFWM8KX": "haskell-day-staff" 3 | } -------------------------------------------------------------------------------- /docs/json/.timestamps.json: -------------------------------------------------------------------------------- 1 | { 2 | "CN3P057K8": "1708179797.931339", 3 | "CA5H65L2J": "1714984347.674529", 4 | "C4M4TT8JJ": "1748257980.521329", 5 | "C01LT3YTT3K": "1708179754.678719", 6 | "C011X16H4TS": "1708179794.062679", 7 | "CCYF8H43A": "1748466635.109459", 8 | "CGT2Q4KHP": "1708179793.171919", 9 | "C5666B6BB": "1748076433.094499", 10 | "CM4J6EDHR": "1718427143.324419", 11 | "CE368SB5G": "1708179791.843599", 12 | "C4LFB6DE0": "1706698766.642739", 13 | "CUPBC8WCE": "1748773038.725519", 14 | "C014PGG641Z": "1739169184.262429", 15 | "C028VRTRBRT": "1718427063.735209", 16 | "C7Y71415W": "1746043423.622569", 17 | "C8KBGEBR7": "1541988378.000400", 18 | "C4P499EPQ": "1541988313.000400", 19 | "CR4U9PBLL": "1718427023.145029", 20 | "CAXQ09PN2": "1718427040.110509", 21 | "CD87P78HF": "1708179798.544269", 22 | "CR2TETE5R": "1748076432.948089", 23 | "C8R0H137H": "1732520395.931959", 24 | "GDTFWM8KX": "1573264081.002700", 25 | "CL3AXB1AL": "1733317500.293679" 26 | } -------------------------------------------------------------------------------- /docs/json/C014PGG641Z/3/1648983203.439729.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "randomに書いた話の続きでstackとnixpkgsを連携してみました\n\n連携方法はstackのドキュメントにありました\n\n参考にしたサイト\n", 4 | "type": "message", 5 | "ts": "1648983203.439729", 6 | "user": "U02KK6NUFFE" 7 | }, 8 | { 9 | "text": "開発では問題ないですが、デプロイがからんでくると、成果物もnixのderivationにしたくなりますが、\nこのフローでどうやるのかよくわからないですね。\n", 10 | "type": "message", 11 | "ts": "1649072024.798779", 12 | "user": "U74KTAG0N" 13 | }, 14 | { 15 | "text": "そういうときに これを使うのでしょうが、いろいろ複雑になってきますね\n", 16 | "type": "message", 17 | "ts": "1649072376.699539", 18 | "user": "U74KTAG0N" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/C014PGG641Z/3/1650460004.502769.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "Maybeを使ってJustとNothingをパターンマッチで分岐するみたいなことをやりました\nなんか他言語と比べてネットで検索してもコードのサンプルがあまり転がってない印象があります", 4 | "type": "message", 5 | "ts": "1650460004.502769", 6 | "user": "U02KK6NUFFE" 7 | }, 8 | { 9 | "text": "今気づきましたがHaskell荘園いろいろコードのサンプルが載っていていいですね\n", 10 | "type": "message", 11 | "ts": "1650664599.457619", 12 | "user": "U02KK6NUFFE" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C01LT3YTT3K/1/1612094550.004200.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1612094550.004200", 4 | "text": "<@U4KU9ABL0>\n• p.229 上から10行目「型 IO a は 8 章で述べた意味では抽象型なので,その値がいくつであるかを知ることはできない.」\n => 「その値がどのように表現されているかを知ることはできない」\n• p.236 上から1行目「モナド則を主張する 3 つめの方法は」\n => 「主張する」より「述べる・記述する」の方がよいと思う\n• p.236 下から10行目「可変構造は,保持する値の更新,もとの構造の破壊をプロセスの中で行うためのものである.」\n => 「可変構造は,保持する値の更新をその過程でもとの構造を破壊することで効率的に行うものである」?\n 原文は \"mutable structures that rely for their efficiency on being able to update their values, destroying the original structure in the process\"\n 英語できる人、ヘルプ!", 5 | "user": "U57CGDBMG", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1612316814.004600", 10 | "text": "1つめは、そのまま、いただきます。\n2つめは、「説明する」とします。\n3つめは、かなり意訳して、「可変構造では,元の構造を破壊しながら効率よく値を更新できる.」とすることにします。", 11 | "user": "U4KU9ABL0", 12 | "type": "message" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C01LT3YTT3K/1/1612672201.005100.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1612672201.005100", 4 | "text": "次回。", 5 | "user": "U57CGDBMG", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1614476159.000100", 10 | "text": "今日13時からですよー。\np.252 第10章の練習問題あたりから再開だったかな。", 11 | "user": "U57CGDBMG", 12 | "type": "message" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C01LT3YTT3K/1/1617338179.000200.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1617338179.000200", 4 | "text": "次回 ", 5 | "user": "U57CGDBMG", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1617338420.000400", 10 | "text": "次回は p.285 *「第12章 単純等式運算器」*の最初から。だったかな。", 11 | "user": "U57CGDBMG", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1619776538.000800", 16 | "text": "次回 ", 17 | "user": "U57CGDBMG", 18 | "type": "message" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/C01LT3YTT3K/1/1624767749.001200.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1624767749.001200", 4 | "text": "<@U4KU9ABL0> 前回の読書会で読んだあたりの訳についてこのスレッドに書いていきます。", 5 | "user": "U57CGDBMG", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1624767787.001300", 10 | "text": "p.309\n最初の運算のために,match を xmatch を使って書き直す\n=>\n最初の運算として", 11 | "user": "U57CGDBMG", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1624767843.001500", 16 | "text": "p.288\ncross (f,g) は今のところ f * g と書くことにする\n=>\nこれから cross (f,g) は f * g と書くことにする", 17 | "user": "U57CGDBMG", 18 | "type": "message" 19 | }, 20 | { 21 | "ts": "1624768008.001700", 22 | "text": "p.293\n少し考えれば,p の値としては以下の 3 つが必要である\n=>\n必要であることがわかる", 23 | "user": "U57CGDBMG", 24 | "type": "message" 25 | }, 26 | { 27 | "ts": "1624770761.002000", 28 | "text": "p.292\n次に項は識別子すなわち変数か定数で引数がある可能性があるもの\n=>\n変数か引数が0個以上続く定数", 29 | "user": "U57CGDBMG", 30 | "type": "message" 31 | } 32 | ] -------------------------------------------------------------------------------- /docs/json/C028VRTRBRT/1/1627105018.007400.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1627105018.007400", 4 | "text": "`Iseq` は解決法としては `ShowS` みたいなもんか??", 5 | "user": "U4L0B71L1", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1627113724.007500", 10 | "text": "ちゃうっぽいな", 11 | "user": "U4L0B71L1", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1627128651.008600", 16 | "text": "構造をそのまま残しておくのがミソ。 (++) とか (.) とかは構成子でななく、injective じゃないので、構造がつぶれてしまう。", 17 | "user": "U4KU9ABL0", 18 | "type": "message" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/C028VRTRBRT/1/1627350084.025300.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1627350084.025300", 4 | "text": "<@U57CGDBMG> こちらのチャンネルですが に保存はしますか?よければ のマージ後に対応します。", 5 | "user": "U4LGTMTMK", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1627446538.025500", 10 | "text": "返信遅くなってすみません。保存 :yoroshikuonegaishimasu: 。", 11 | "user": "U57CGDBMG", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1627558861.026200", 16 | "text": ":kanryo: で設定を追加して、 で保存しました :white_check_mark:", 17 | "user": "U4LGTMTMK", 18 | "type": "message" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/C4LFB6DE0/28/1613956587.005500.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1613956587.005500", 4 | "text": ":mega: *重要なお知らせ・開発者募集*\n先ほど定期リマインダーを更新したとおり、現在当Slack Workspaceにおける多くのチャンネルは、 で開発しているアプリケーションで同リポジトリーにほぼ1日おきに保存・公開されています。\n(長らく分かりづらくしていて申し訳ございません :man-bowing: )\n数ヶ月にわたる開発の結果、本日よりメッセージへのreplyが、各チャンネルに投稿したメッセージのログとは異なるファイルに保存されることになりました。\nこれは、Slackの新しいConversation APIを採用した(せざるを得なかった)結果による変更です。ところが、現状JSONとして保存されているログをHTMLに変換する処理がこの変更に追従できておらず、本日以降保存される*replyは で閲覧できません*。\nそこで、このHTMLに変換する処理の変更 と、なるべくその前に加えておきたい修正 をどなたかに*開発をお願い*したいと考えています。\n興味のある方は <#CBY49962V|slack-log> チャンネルにてご連絡いただくか、当該のissueにコメントをください!ご協力お待ちしています! :pray:", 5 | "user": "U4LGTMTMK", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1613957008.005600", 10 | "text": "もちろん他のissueへの対応も大歓迎します!", 11 | "user": "U4LGTMTMK", 12 | "type": "message" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C4LFB6DE0/28/1617245039.007000.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1617245039.007000", 4 | "text": "This message was deleted.", 5 | "user": "USLACKBOT", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1617262143.007200", 10 | "text": "<#C4LFB6DE0|general> だよ:sunglasses:", 11 | "user": "U4L0B71L1", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1617263441.007600", 16 | "text": "間違えた!", 17 | "user": "U4LGTMTMK", 18 | "type": "message" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/C4LFB6DE0/28/1618724316.011700.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1618724316.011700", 4 | "text": ":mega: [お知らせ] SlackのGitHub integrationを新しいバージョンに移行するよう迫られた + インストールしているintegrationの数がFreeプランの上限に達してしまっていて新たに追加出来ない、という状況なので、古いGitHubのintegrationを削除します。もしかしたらリポジトリーによっては連携の再設定が必要になるので、ご利用中の方はご容赦ください :man-bowing:", 5 | "user": "U4LGTMTMK", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1618725175.012000", 10 | "text": "なんか、挙動が分かりづらくって結果的に全repositoryの連係が解除されてしまったような気がします :cold_sweat:", 11 | "user": "U4LGTMTMK", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1618725733.012200", 16 | "text": "私が関与しているリポジトリーは一通り再度連携出来たはず :white_check_mark:", 17 | "user": "U4LGTMTMK", 18 | "type": "message" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/C4LFB6DE0/28/1620546311.018000.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1620546311.018000", 4 | "text": " :man-bowing: と同様に、Slack Workspaceの運営に関わる重要事項なので全体へのメンションをさせていただきます :man-bowing:\n以前、Pull requestでの議論を受けて一旦取り下げたCode of Conductの代わりに、Haskell FoundationのGRCをほぼそのまま翻訳して採用したいと思います。*マージ次第このSlack Workspaceに適用*しますので、ご意見よろしくお願いします。\n", 5 | "user": "U4LGTMTMK", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1621162164.021100", 10 | "text": "こちらただいまマージ致しました。\n今後ともHaskell-jpのメンバーとしてよろしくお願いします。\nhask(_ _)eller", 11 | "user": "U4LGTMTMK", 12 | "type": "message" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C4LFB6DE0/31/1644881915.957309.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": ":wave: Hi everyone!", 4 | "type": "message", 5 | "ts": "1644881915.957309", 6 | "user": "U033EM03449" 7 | }, 8 | { 9 | "text": "Welcome! :grin:", 10 | "type": "message", 11 | "ts": "1644883777.823489", 12 | "user": "U4LGTMTMK" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C4LFB6DE0/31/1645869092.683589.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "This message was deleted.", 4 | "type": "message", 5 | "ts": "1645869092.683589", 6 | "user": "USLACKBOT" 7 | }, 8 | { 9 | "text": "<#C4LFB6DE0|general> is not where you post job offers. Please move this post to <#C4M4TT8JJ|random> then delete this?", 10 | "type": "message", 11 | "ts": "1645870375.582289", 12 | "user": "U4LGTMTMK" 13 | }, 14 | { 15 | "text": "thank you will do it", 16 | "type": "message", 17 | "ts": "1645871983.447269", 18 | "user": "U033EM03449" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/100/1663331957.528359.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": ":warning: 取り急ぎ報告まで。現在 にアクセスできない状態となっております。 ", 4 | "type": "message", 5 | "ts": "1663331957.528359", 6 | "user": "U4LGTMTMK" 7 | }, 8 | { 9 | "text": "", 10 | "type": "message", 11 | "ts": "1663338561.874549", 12 | "user": "U4LGTMTMK" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/101/1668735687.824279.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "今気づいたんですが、二日ほど前にGHC9.2ベースのStackage LTS 20.0 出てたんですね\n", 4 | "type": "message", 5 | "ts": "1668735687.824279", 6 | "user": "UK0MXUCAV" 7 | }, 8 | { 9 | "text": "<#C5ALB0HU2|stackage-lts> にも通知来てますね", 10 | "type": "message", 11 | "ts": "1668779309.382559", 12 | "user": "U5G2BCVBN" 13 | }, 14 | { 15 | "text": "……!こんなチャンネルあったんですね。知りませんでした。ありがとうございます:pray: ", 16 | "type": "message", 17 | "ts": "1668830877.824229", 18 | "user": "UK0MXUCAV" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/101/1671850321.263199.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "mtlがもうサポートしないレベルのGHC 7とかサポートしてて依存関係がどうにもならなかったので、もうサポート切っても良くないか?と思ってダメ出し覚悟で切ったPR送ったら案の定「新しい機能はCPPで囲んで古いGHCとmtlもサポートして」と言われてしまった\nリポジトリオーナーは絶対なのでまあ修正し直すんですが\nそれはそうと今回みたいなケースでやたらと古いGHCをサポートする必要が思い浮かばない\n重大なバグフィックスとかならともかく、新しい機能が欲しければ結局新しいGHCとmtlが必要なわけで、古いGHCで使えるのは見た目のバージョンが新しくても新しい機能は使えないわけで、それなら古いバージョンを使っても同じじゃない?みたいな\n", 4 | "type": "message", 5 | "ts": "1671850321.263199", 6 | "user": "U57CUMWQ6" 7 | }, 8 | { 9 | "text": "まあその後でなにか機能追加するとかあるのかもしれないけど", 10 | "type": "message", 11 | "ts": "1671850731.848369", 12 | "user": "U57CUMWQ6" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/101/1672887665.396769.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "※Haskellと直接関係ない業務連絡です。\nCircle CIからなにか怪しいアクセスがあったそうで、保存しているsecretをなるべく速く更新せよ、とのこと\n\n今Circle CI使っているのはblogだけかな?思い当たるものがあれば教えてください。", 4 | "type": "message", 5 | "ts": "1672887665.396769", 6 | "user": "U4LGTMTMK" 7 | }, 8 | { 9 | "text": "Dashboardを確認した限りblogでも特に機密情報は保存してなさそう :relieved:", 10 | "type": "message", 11 | "ts": "1672887819.872859", 12 | "user": "U4LGTMTMK" 13 | }, 14 | { 15 | "text": "SSH Keysの中に読み書きできる鍵があったので念のため削除して再生成しておきました。", 16 | "type": "message", 17 | "ts": "1672888713.269279", 18 | "user": "U4LGTMTMK" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/101/1674642458.472019.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "Slack が制限により使いづらくなっているので Reddit の方で記事をシェアしようと思ったんですが、モデレーターの許可がないと投稿できないようになっていました", 4 | "type": "message", 5 | "ts": "1674642458.472019", 6 | "user": "U5LEE6C1J" 7 | }, 8 | { 9 | "text": "Slackの制限とは何のことですか?3ヶ月でデータが見えなくなる問題?", 10 | "type": "message", 11 | "ts": "1674643771.089309", 12 | "user": "U4LGTMTMK" 13 | }, 14 | { 15 | "text": "取り急ぎ、Redditの方で「Type of Community」を「Public」にしたので投稿できるはずです。", 16 | "type": "message", 17 | "ts": "1674644063.716199", 18 | "user": "U4LGTMTMK" 19 | }, 20 | { 21 | "text": "そうですねー。新しめの投稿を参照しようとしてもアーカイブにはなくて Slack の方を参照すると時間が経つと切れてしまうという感じです。対応ありがとうございます", 22 | "type": "message", 23 | "ts": "1674645115.143679", 24 | "user": "U5LEE6C1J" 25 | } 26 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/102/1676195913.344389.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "type": "message", 4 | "user": "U4LGTMTMK", 5 | "ts": "1676195913.344389", 6 | "text": "baseパッケージだけで `PATH` 環境変数に入ったパスを分割する、横着なワンライナーを考えました\n```mapM_ print . filter (/= \";\") . groupBy (\\a b -> a /= ';' && b /= ';') =<< getEnv \"PATH\"```\nWindows上でやったので `PATH` の区切りがセミコロンになっている点に注意" 7 | }, 8 | { 9 | "type": "message", 10 | "user": "U4LGTMTMK", 11 | "ts": "1676196144.557619", 12 | "text": "splitパッケージや、textパッケージの `splitOn` を使わず、 `groupBy` で済ませているのがポイント" 13 | }, 14 | { 15 | "type": "message", 16 | "user": "UF8SE896V", 17 | "ts": "1676211335.960189", 18 | "text": "`;` (あるいは `:`) を `\\n` に置換して lines したほうが素直そうだなあ、と思ってしまいました^^\n```mapM_ print . lines . map (\\case {':' -> '\\n'; x -> x}) =<< getEnv \"PATH\"```\nLambdaCase つかっていますが^^;" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/102/1678542309.366269.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "type": "message", 4 | "user": "UGM9F7XQS", 5 | "ts": "1678542309.366269", 6 | "text": "GHC 9.6のJavaScript backendを環境を汚さずに試したかったのでDockerfileを書いてみました。WebAssembly版も書いていますが、色々問題にぶち当たっています。ホストがAArch64じゃなくてx86_64なら問題ないのかもしれません。 " 7 | }, 8 | { 9 | "type": "message", 10 | "user": "UGM9F7XQS", 11 | "ts": "1678704869.657919", 12 | "text": "wasm32-wasi用のGHCをビルドするDockerfileも書けました。GHCをビルドする際のバグを回避するためにパッチを当てたりしています。途中でGHCだけでなくLLVMのビルドも走りますが、新しい物好きの人は試してみる価値があると思います。" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/102/1680693382.818309.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "type": "message", 4 | "user": "U01K57PCEH2", 5 | "ts": "1680693382.818309", 6 | "text": "そういえば、Haskellにとどまらない、関数型言語や型理論、数学(基礎論)よりのCSとかこれ系全般の(日本の)コミュニティってありますかね?(今、Idrisでグラフィック触れるライブラリいい感じのを知ってる人どこかにいないかなとか考えてて)(Haskellのコミュニティなのにこういう話ばっかりしてすみません)" 7 | }, 8 | { 9 | "type": "message", 10 | "user": "U4LGTMTMK", 11 | "ts": "1680693732.154529", 12 | "text": "一応ここには <#C7Y71415W|math> というチャンネルもあるよ、とだけ" 13 | }, 14 | { 15 | "type": "message", 16 | "user": "USS5JD12Q", 17 | "ts": "1680694565.174969", 18 | "text": "すでにご存知かもしれませんが、プログラミング言語処理系が好きな人の集まり\n" 19 | }, 20 | { 21 | "type": "message", 22 | "user": "U01K57PCEH2", 23 | "ts": "1680694719.754369", 24 | "text": "あ、そこも参加させていただいてます!(Zulip版だけ)\n確かに、私が書いたようなコミュニティに近い側面ありそうですもんね。(参加してるのに気づいてなかった人)" 25 | } 26 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/102/1681355182.628729.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "type": "message", 4 | "user": "U578W9676", 5 | "ts": "1681355182.628729", 6 | "text": "`id` は `($)` の代わりができるというのをどこかで読みました。`($) :: (a -> b) -> (a -> b)` は `id` を特殊化した型になってますし、 `id f x = (id f) x = f x` になるので。`flip id` は `flip ($)` と置き換え可能で、機能的には同じだと思うんですけど、 では文字数が少ないから `id` を使うんでしょうか :thinking_face:" 7 | }, 8 | { 9 | "type": "message", 10 | "user": "U4KU9ABL0", 11 | "ts": "1681374829.391619", 12 | "text": "golf用のテクニックかもしれませんね.\n似たようなものに `flip const` を `const id` に置き換えるというテクニックもありますね." 13 | }, 14 | { 15 | "type": "message", 16 | "user": "U4KU9ABL0", 17 | "ts": "1681377098.043799", 18 | "text": "ああ、golf的には `flip id` と `flip($)`は同じ字数ですね" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/103/1685234164.446779.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "type": "message", 4 | "user": "U4LGTMTMK", 5 | "ts": "1685234164.446779", 6 | "text": "空のコレクションに対するanyとandの話、Haskell以外も含めて定期的に見かける気がします\n" 7 | }, 8 | { 9 | "type": "message", 10 | "user": "U61BA2X0U", 11 | "ts": "1685490218.484159", 12 | "text": "∀x∈X, P(x). が X=∅ のときは真か偽か、という話ですね。" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/103/1686960130.612459.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "type": "message", 4 | "user": "UL1HFJATE", 5 | "ts": "1686960130.612459", 6 | "text": "slack-log って一度取得した投稿の編集を発見できないので,この Slack で発言する時には投稿時点でできる限り推敲して投稿後の編集を少なくしようと頑張ってはいるのですが,ちょっと油断した時に大きな漏れがあって大編集をしちゃうんですよね…." 7 | }, 8 | { 9 | "type": "message", 10 | "user": "U4LGTMTMK", 11 | "ts": "1686961676.658909", 12 | "text": "一応、どうしても修正したいのであればPull requestを送ってJSONを修正いただければ対応します。\nただ、再生成をあまりしたことがないのでちょっと面倒くさいかも..." 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/103/1687038464.141409.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "type": "message", 4 | "user": "UMKGDJ2RZ", 5 | "ts": "1687038464.141409", 6 | "text": "久しぶりに覗いてみたら過去の投稿がだいぶ見えなくなってる上に新しい投稿も少なくなってるように見えるんですが、他のチャットサービスに移行したりしたんでしょうか? してないならする予定はあるんでしょうか?" 7 | }, 8 | { 9 | "type": "message", 10 | "user": "U4LGTMTMK", 11 | "ts": "1687042626.584809", 12 | "text": "Slackの仕様変更で過去90日分までしか表示されなくなってしまったからだと思います。特に行こうする予定はありません。" 13 | }, 14 | { 15 | "type": "message", 16 | "user": "UL1HFJATE", 17 | "ts": "1687045365.515799", 18 | "text": "一応 で過去の投稿は確認できます." 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/103/1692276375.313729.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "type": "message", 4 | "user": "U4L0B71L1", 5 | "ts": "1692276375.313729", 6 | "text": "この _~/.config/cabal/config_ の部分は Windows ではそこではないっぽい\n(_$Env:APPDATA/cabal/config_ か\n```> cabal upload --help\n\n…\n\nYou can store your Hackage login in the ~/.config/cabal/config file\nRelevant global configuration keys:\n username\n password\n password-command```" 7 | }, 8 | { 9 | "type": "message", 10 | "user": "U4L0B71L1", 11 | "ts": "1692755358.009559", 12 | "text": "改修取り込まれそう " 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/104/1695776800.610899.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "type": "message", 4 | "user": "U56MBRKR9", 5 | "ts": "1695776800.610899", 6 | "text": "サーバーとかで、いろいろなパラメータの統計をとる場合、たくさんの IORef ではなく、IOUArray を用意してそれぞれの要素を atomic に更新したくなります。\narray にそういう関数は提供されてないのですが、プリミティブに cas があるようで、\"massiv\" パッケージを参考に作ってみました。\n\nHaskellの弱点が、一挙になくなった感じ。\narray はデフォルトでこれを提供してほしい。。。" 7 | }, 8 | { 9 | "type": "message", 10 | "user": "U56MBRKR9", 11 | "ts": "1695777343.050459", 12 | "text": "まぁ、衝突は避けた方がいいので、コアごとに配列を持ち、読み出すときに足し合わせるのがいいと思います。" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/104/1697079483.233489.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "type": "message", 4 | "user": "U56MBRKR9", 5 | "ts": "1697079483.233489", 6 | "text": "GHC 9.8.1 ですが、Data.List と Data.Functor を import すると unzip が衝突しますね。\nひどい。" 7 | }, 8 | { 9 | "type": "message", 10 | "user": "U56MBRKR9", 11 | "ts": "1697080036.788039", 12 | "text": "" 13 | }, 14 | { 15 | "type": "message", 16 | "user": "U56MBRKR9", 17 | "ts": "1697087500.878519", 18 | "text": "Prelude も unzip を export していて、Data.List のと同じなので、hiding (unzip) は Data.Functor にすべき。" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/104/1698326745.756449.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "type": "message", 4 | "user": "U015L5JEP8D", 5 | "ts": "1698326745.756449", 6 | "text": "\n\nHaskellで書いたプログラムの動作速度は(得意不得意はあれど)おおむねJavaぐらいになるものだと思っているのですが、これは正しいでしょうか" 7 | }, 8 | { 9 | "type": "message", 10 | "user": "U01CFSSPZHB", 11 | "ts": "1698389355.254389", 12 | "text": "C、C++、Rustは大体一番速くて、Haskellは遅いコードを書きやすいが、割と速く出来るケースも多いです。基本的にJavaより少し速いです。\n\n\n\n競争的なプログラミングではCは大体一番速くて、HaskellはJavaやPythonより速い答えが多いです。\n\n" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/104/1700012206.547009.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "type": "message", 4 | "user": "U4L0B71L1", 5 | "ts": "1700012206.547009", 6 | "text": "Cabal の Windows での QA テスターが足りていないそうです\n我こそはという方:point_down:\n" 7 | }, 8 | { 9 | "type": "message", 10 | "user": "U74KTAG0N", 11 | "ts": "1700109663.955439", 12 | "text": "よくわかってないですが、これがMSVCでコンパイルしたものですか?それともgccですか?" 13 | }, 14 | { 15 | "type": "message", 16 | "user": "U4LGTMTMK", 17 | "ts": "1700123852.937029", 18 | "text": "現状GHCはそもそもMSVCをサポートしてなかったはずですのでmsys2のgccでしょう。" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/104/1701095236.479149.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "type": "message", 4 | "user": "U02T0K000AV", 5 | "ts": "1701095236.479149", 6 | "text": "興味本位なのですが haskell for all ってどういう人(or チーム)が書いているかどなたかご存知ですか?\n(あるいは特定の著者が不在のキュレーションサイトだったりしますか?)" 7 | }, 8 | { 9 | "type": "message", 10 | "user": "U4LGTMTMK", 11 | "ts": "1701131486.898169", 12 | "text": "Gabriella Gonzalez さんですね。\n を見れば分かるとおり、めちゃめちゃ活躍されてる方ですよ" 13 | }, 14 | { 15 | "type": "message", 16 | "user": "U02T0K000AV", 17 | "ts": "1701319167.151869", 18 | "text": "なるほど〜. ありがとうございます" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/105/1709162962.604589.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1709162962.604589", 4 | "text": "「エンジニアHub」という転職サービスの終了に伴い、私が過去寄稿した記事も の通り移行しました。現状元のURLでもちゃんとリダイレクトされるようですが、報告まで。", 5 | "type": "message", 6 | "user": "U4LGTMTMK" 7 | }, 8 | { 9 | "ts": "1709163443.295049", 10 | "text": "Haskell-jp Wikiからコピーして頂いていた haskell-shoen でも該当の記事を参照していたので修正しました。\n\n", 11 | "type": "message", 12 | "user": "U4LGTMTMK" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/106/1715401346.428539.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1715401346.428539", 4 | "text": "GHC 9.10.1、来ましたね\n", 5 | "type": "message", 6 | "user": "U4LGTMTMK" 7 | }, 8 | { 9 | "ts": "1715408188.328769", 10 | "text": "GHC 9.10の有り難い日本語解説はこれ↓\n", 11 | "type": "message", 12 | "user": "U55V441FS" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/106/1718602264.313349.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1718602264.313349", 4 | "text": "@here 皆様、こんにちは(あるいははじめまして)。水島です。igrepさんからご案内いただいた の件なのですが、ScalaMatsuri運営元のJapan Scala Associationで「関数型を盛り上げるために、ScalaMatsuriというイベントの枠でなくFPコミュニティを巻き込んだ関数型イベントができないか」という案があがっています。イベントのイメージとしては、1日〜2日どこかのハコを借りて、様々な関数型言語 / 関数型プログラミングについての発表が行われる技術イベントといった感じです(詳細未定)。Clojureコミュニティから1名、Erlang / Elixirコミュニティから1名協力いただけるという返事をいただいています。一緒に国内でのFPを盛り上げていきたいという方、よろしくお願いします!興味ある方、こちらのSlackでも連絡いただけると嬉しいです。", 5 | "type": "message", 6 | "user": "U077YGSP3EK" 7 | }, 8 | { 9 | "ts": "1718675012.024289", 10 | "text": "すみません、最初に打診頂いた際断った身で恐縮ですが、どうしても発表したいネタが思いついたので、私も協力させてください。運営と発表を兼ねられるのであれば、ですが...", 11 | "type": "message", 12 | "user": "U4LGTMTMK" 13 | }, 14 | { 15 | "ts": "1718689673.655769", 16 | "text": "<@U4LGTMTMK> ありがとうございます!今のところは運営と発表を兼ねるとかも特に問題なくいけるかと思います。その旨お伝えしておきますね", 17 | "type": "message", 18 | "user": "U077YGSP3EK" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/106/1720046658.241399.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1720046658.241399", 4 | "text": "container2wasmという、(Docker等で使う)コンテナーをWasm上で動かす技術を用いてGHCiをブラウザーで動かした、という話\n", 5 | "type": "message", 6 | "user": "U4LGTMTMK" 7 | }, 8 | { 9 | "ts": "1720092053.350569", 10 | "text": "wasmでghciが動くということは、現状wasmターゲットでTHが動かないのはひたすらにコーナーケースがめんどくさいとかで技術的に困難というわけではないのかな", 11 | "type": "message", 12 | "user": "U57CUMWQ6" 13 | }, 14 | { 15 | "ts": "1720099340.474179", 16 | "text": "container2wasmは、CPUのエミュレーターをWasmで動かしてその上でコンテナーを動かす(で、その上でGHCのネイティブバイナリーを動かす)、というアプローチなのでWasmターゲットのGHCを動かす話とは大きく異なります。", 17 | "type": "message", 18 | "user": "U4LGTMTMK" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/106/1729153613.735389.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1729153613.735389", 4 | "text": " GHC 9.12.1-alpha1が出ました。ガンガン試してバグを洗い出していきましょう(私はすでに2件ほど報告しました)。個人的にはx86 NCG SIMDとRISC-V NCGがアツいです。紹介記事は準備中です。", 5 | "type": "message", 6 | "user": "UGM9F7XQS" 7 | }, 8 | { 9 | "ts": "1729482073.342369", 10 | "text": " 紹介記事を公開しました。取り上げる内容は独断と偏見に基づくので、私がよくわかっていない分野(RTSやTemplate Haskell)は省かれている場合があります。また、後から「これも重要そう」と思ったトピックはこっそり追記する場合があります。", 11 | "type": "message", 12 | "user": "UGM9F7XQS" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/107/1744697440.723989.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1744697440.723989", 4 | "text": "「関数型まつり」って現地参加のみな感じですかね?14日は地元で用事があって行けないんですよね", 5 | "type": "message", 6 | "user": "UGM9F7XQS" 7 | }, 8 | { 9 | "ts": "1744703268.250519", 10 | "text": "現段階の想定では現地のみです :pray:\n運営チームではリアルタイム or/and アーカイブの配信も以前から検討しているのですが、予算や機材調達の都合がつけば実現できるかもという状態です。", 11 | "type": "message", 12 | "user": "U56JX2GM8" 13 | }, 14 | { 15 | "ts": "1744703885.670749", 16 | "text": "返信ありがとうございます:bow: 頑張って15日だけでも行く方向で検討します!", 17 | "type": "message", 18 | "user": "UGM9F7XQS" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/86/1611635843.002700.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1611635843.002700", 4 | "text": "よりよいHaskellコンパイラーに向けたもろもろの研究の紹介\n", 5 | "user": "U4LGTMTMK", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1611635923.003100", 10 | "text": "途中で言及されているGibbonコンパイラーは一昨年のHIWで発表されたので、Haskell-jp Blogでも紹介しました。\n", 11 | "user": "U4LGTMTMK", 12 | "type": "message" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/86/1612468125.015700.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1612468125.015700", 4 | "text": ":tada: *ghcups* version 4.1 をリリースしました(ghcup じゃないよ)。\nGHC 9.0.1 をサポートしました。\n", 5 | "user": "U4L0B71L1", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1612468245.016000", 10 | "text": "", 11 | "user": "U4L0B71L1", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1612629558.025600", 16 | "text": "GHC 8.10.4 がリリースされたので ghcups も 4.2 に\n", 17 | "user": "U4L0B71L1", 18 | "type": "message" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/86/1612576852.021800.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1612576852.021800", 4 | "text": "素晴らしそう。たけのぶさんありがとう! :haskell:\n「GHC Reading Guide」\n", 5 | "user": "U4LGTMTMK", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1612597609.022500", 10 | "text": "有難うございます! すぐにv0.01.1に修正しました:slightly_smiling_face:\nGHCのソースコードを読むための簡単なガイド的なものです。\nHappy Haskelling! :haskell:", 11 | "user": "U55V441FS", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1612828906.043400", 16 | "text": "telegramのHaskell中文交流グループでも紹介されておりました!", 17 | "user": "U561MADLH", 18 | "type": "message" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/86/1612691367.028600.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1612691367.028600", 4 | "text": "winterland1989 さんの、これですよね:sparkles::haskell:\n魔力Haskell\n", 5 | "user": "U55V441FS", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1612729503.031900", 10 | "text": "火鍋boyさん!", 11 | "user": "U561MADLH", 12 | "type": "message" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/87/1613846879.002100.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1613846879.002100", 4 | "text": "GHC の User Guide、9.0.1 から結構ページが変わってる\n\n\nlatest ってなってたリンクが軒並み死んだ(ちゃんとバージョンを指定しておこうな)", 5 | "user": "U56L7EVNY", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1613847134.002200", 10 | "text": "軒並みは言いすぎた、言語拡張のリンクだけ?変わってしまったみたいだ", 11 | "user": "U56L7EVNY", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1613858762.003500", 16 | "text": "このissueの件ですかね ", 17 | "user": "UGM9F7XQS", 18 | "type": "message" 19 | }, 20 | { 21 | "ts": "1613861516.004000", 22 | "text": "たけのぶさんが報告済みだった!さすが!\n", 23 | "user": "U4LGTMTMK", 24 | "type": "message" 25 | } 26 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/88/1614305304.034000.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1614305304.034000", 4 | "text": "ログが取られない(公開されない)雑談できるチャンネルはありますか?", 5 | "user": "U56MBRKR9", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1614305942.034300", 10 | "text": "現状作ってませんが、必要ならご自由に作ってください。(個人的にはあまりおすすめしませんが...)", 11 | "user": "U4LGTMTMK", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1614305984.034500", 16 | "text": "勧めない理由は何でしょうか?", 17 | "user": "U56MBRKR9", 18 | "type": "message" 19 | }, 20 | { 21 | "ts": "1614306993.034700", 22 | "text": "一義的には、ここは情報を共有する場なので。共有されるべき情報が記録されないのは後々困るだろうと言うことでわざわざ記録するアプリケーションを書いたわけですし。\nあと、少し話がそれますが基本的にはここは誰でも入れるスペースなので、一時的にせよ事実上公開情報となることはお忘れなく。まさかないとは思いますが問題となる発言があれば誰かが勝手に別のところに共有してしまい、意味がなくなるリスクもゼロではありません。", 23 | "user": "U4LGTMTMK", 24 | "type": "message" 25 | }, 26 | { 27 | "ts": "1614307041.034900", 28 | "text": "そうですか。では、やめておきます。", 29 | "user": "U56MBRKR9", 30 | "type": "message" 31 | } 32 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/88/1615295221.004700.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1615295221.004700", 4 | "text": "GHCのmasterブランチに、RecordDotの現時点の実装が入りました。 (masterをビルドすると試せます。)\n最初のRecordDotSyntaxの提案は修正されて、2つの言語拡張に分割されています。\n`OverloadedRecordDot` と `OverloadedRecordUpdate` です。\n分割の提案はこちら。\nSplit RecordDotSyntax into two extensions\n\nなお、`OverloadedRecordUpdate` 側は、将来的に変更され得る実験段階の扱いです。\nしばらくは経験を積んで知見を高めながら、仕様&実装変更して行くようです。", 5 | "user": "U55V441FS", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1615295253.005000", 10 | "text": "各々のコード例などは、以下です。\n\n\n\nこういうセクション記法も可能になります。\n`f = map (.name) xs`", 11 | "user": "U55V441FS", 12 | "type": "message" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/88/1615607158.009100.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1615607158.009100", 4 | "text": "GHCのmasterブランチに、`GHC2021`言語拡張の実装も入りました。(masterをビルドすると試せます。)\ncommitの詳細はこれです。\n\n`GHC2021`言語拡張の提案詳細はこれです。\n\nなお、GHC 9.2からは、この`GHC2021`言語拡張が、デフォルトで有効になる方向です。", 5 | "user": "U55V441FS", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1615607556.009800", 10 | "text": "`GHC2021`言語拡張をオフにしたい場合は、`NoGHC2021`を指定するのではなく、`Haskell2010`言語拡張を、`Language`プラグマか`-X`オプションで指定します。", 11 | "user": "U55V441FS", 12 | "type": "message" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/89/1616510930.011600.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1616510930.011600", 4 | "text": "convertible パッケージの `Data.Convertible.Convertible` クラス、別パッケージに分離してほしいな\ndata-default-class パッケージのように\nconvertible の依存する old-time が build-type: configure で Windows において手間がかかるので", 5 | "user": "U4L0B71L1", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1616540056.011800", 10 | "text": "orphan instance用のパッケージを分けて欲しいとかそういう話?", 11 | "user": "U4LGTMTMK", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1616578412.012300", 16 | "text": "ですね", 17 | "user": "U4L0B71L1", 18 | "type": "message" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/89/1617327295.025100.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1617327295.025100", 4 | "text": "GHC2021とレコード周りの修正がめっちゃありがたいですねー。プロファイリングやデバッグ周りもよさげな新機能が :eyes:", 5 | "user": "U4LGTMTMK", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1617359032.025800", 10 | "text": "GHC 9.2.1-alpha1では、RecordDot構文が使えるようになっています。 こんな感じ。\n```ghci> :set -XOverloadedRecordDot \nghci> data Val = Val {field1::Bool, field2::Int} deriving Show\nghci> x = Val True 100\nghci> x.field1\nTrue\nghci> x.field2\n100```\nあと、`GHC2021`言語拡張はデフォルトで有効になっています。\nこれで有効になる言語拡張の一覧はここ。\n\nコード冒頭のLanguageプラグマのリストが減ります:slightly_smiling_face:", 11 | "user": "U55V441FS", 12 | "type": "message" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/89/1617972510.033000.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1617972510.033000", 4 | "text": "Pythonを操作インターフェイスにしている、おそらくJavaで書かれたライブラリをHaskellで操作しようと思っています。\nprotocol bufferファイルを公開しているので、それを使えばHaskellに型をマッピング出来て、しかも通信部分も型安全に出来るのではと思いました。\nとりあえず検索してみた所、 がよく使われてそうだと分かりました。\nProtocol Bufferを扱うのは実は初めてなので、どのように使うのが王道なのかよく分かっていません。\n「こっちのライブラリの方が良いよ」とか「このライブラリが便利だよ」などの助言があれば教えていただけると嬉しいです。", 5 | "user": "U57CUMWQ6", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1617974308.033300", 10 | "text": "自身初 protocol buffers なので大した知見はないですが自分も protocol-buffers パッケージ使ってます\nprotocol buffers version 3 に対応してないっぽいですが", 11 | "user": "U4L0B71L1", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1618381699.059100", 16 | "text": "ありがとうございます、更に色々見比べて見た所protocol-buffersの方がファイル分割がよくされているのでとりあえずこちらを使ってみることにしようと思います\nlensと違ってフィールド名が被りそうなのが懸念点ですが…", 17 | "user": "U57CUMWQ6", 18 | "type": "message" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/90/1619493858.084300.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1619493858.084300", 4 | "text": "~以前こちらに投稿した~sydtestと同様に、Hspecを置き換えるテスティングフレームワークみたいです。こっちの方が大分高機能?\n", 5 | "user": "U4LGTMTMK", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1619494047.084400", 10 | "text": "以前投稿したつもりがしてなかったっぽい :sweat_smile:\nのでsydtestも共有しておきます ", 11 | "user": "U4LGTMTMK", 12 | "type": "message" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/90/1619928838.094000.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1619928838.094000", 4 | "text": "\n前チラッと出てた zhaskell、スポンサーは EMQ なんですね。すごいなこの会社。", 5 | "user": "U56L7EVNY", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1620939807.101200", 10 | "text": "<@U01M91RMC1G> さんがzhaskellの管理人かつEMQの社員さん。ですので冬さんのSlackのアイコンもzhaskellのロゴとよくにていらっしゃいますね!", 11 | "user": "U561MADLH", 12 | "type": "message" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/90/1620029434.096200.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1620029434.096200", 4 | "text": "知らなかった…… 型注釈の構文を流用しているからかな", 5 | "user": "U5LEE6C1J", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1620041807.097200", 10 | "text": "そうみたいですね。\n> As with other type signatures, you can give a single signature for several data constructors. In this example we give a single signature for `T1` and `T2`:\n", 11 | "user": "UDUBKLQMD", 12 | "type": "message" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/90/1620280883.099400.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1620280883.099400", 4 | "text": "GitHub Actions で README.md しか変更してないのに Haskell プログラムのリンクに失敗するようになった……\nぐぬぬ\n何か環境が変わったんですかね?\n", 5 | "user": "U4L0B71L1", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1620282764.099600", 10 | "text": "Hint 使ってる関係っぽい気がする", 11 | "user": "U4L0B71L1", 12 | "type": "message" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/90/1621513892.003700.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1621513892.003700", 4 | "text": "IRCのfreenodeの件に関して、#ghcのチャネルの運用は既に libera.chatへ移っています。\n", 5 | "user": "U55V441FS", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1621514104.004000", 10 | "text": "freenodeの件については、この辺に情報がありますので補足です。\n\n\n", 11 | "user": "U55V441FS", 12 | "type": "message" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/90/1621994779.009200.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1621994779.009200", 4 | "text": "NikeがHaskell製のライブラリーを出しているとは :athletic_shoe:\n\n(このライブラリー自体は恐らく以前も挙げたもので恐縮ですが、今更気づきました :man-bowing: )", 5 | "user": "U4LGTMTMK", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1621997967.010400", 10 | "text": "NIKEさんはHaskellでラムダを書いてますか?:open_mouth:", 11 | "user": "USC6N666N", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1621998467.010800", 16 | "text": "実際のところはNikeさんに聞かないとわからないですが、どこかで使っている可能性は十分ありますね。\n の他のリポジトリーはすべてHaskell以外なのですごく使っている、というわけではなさそうですが", 17 | "user": "U4LGTMTMK", 18 | "type": "message" 19 | }, 20 | { 21 | "ts": "1621998519.011000", 22 | "text": "気になって を見たところ、社内システム(IP - internal product)で使っている、ということなのかな...?", 23 | "user": "U4LGTMTMK", 24 | "type": "message" 25 | } 26 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/90/1622047804.013300.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1622047804.013300", 4 | "text": "i を j と誤字る系のバグ、見つけにくい上に型検査にも引っ掛からなくて辛い", 5 | "user": "U5LEE6C1J", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1622089629.014200", 10 | "text": "xとyを間違えるとかも同系統ですね……", 11 | "user": "U61BA2X0U", 12 | "type": "message" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/90/1622371401.016400.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1622371401.016400", 4 | "text": "こんな本でてたの全然知らなかった(忘れてるだけかも知れないけど) :open_mouth:\n?", 5 | "user": "U4LGTMTMK", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1622371638.016600", 10 | "text": "今日だけ割り引きしてる?", 11 | "user": "U56L7EVNY", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1622371817.016900", 16 | "text": "みたいですね。私もセールのメールで知ったので", 17 | "user": "U4LGTMTMK", 18 | "type": "message" 19 | }, 20 | { 21 | "ts": "1622376351.017200", 22 | "text": "日替わりで一冊半額になっていると思いました。", 23 | "user": "UMTRA1VHU", 24 | "type": "message" 25 | } 26 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/91/1622820046.019800.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1622820046.019800", 4 | "text": "containers の `Data.Graph.Vertex` が `Int` 固定なの使いにくい…… ", 5 | "user": "U4L0B71L1", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1622821074.019900", 10 | "text": "これを見てみてる ", 11 | "user": "U4L0B71L1", 12 | "type": "message" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/91/1623722353.041800.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1623722353.041800", 4 | "text": "お久しぶりです。\n求人(scala/python)の案内などさせていただいてよろしいでしょうか?場違いならすみません。さらにhaskell関係無くて申し訳ないのですが、haskell出来る人はどんな言語でも優秀な方が多いと思っています。", 5 | "user": "U7GSVRQ6S", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1623744674.043500", 10 | "text": "私はHaskellが好きでHaskellを使っているので、「どんな言語でも優秀」という理屈によってHaskellコミュニティに無関係な求人を出されると萎縮します。", 11 | "user": "U4KUNQF9N", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1623764884.043900", 16 | "text": "考えました。ここでHaskellを書くわけでないお仕事の募集はやらないでいただきたいです。\n閲覧できる範囲でrust-jpの方も見ましたが、やはりすべて、(少なくとも表面上は)Rustのお仕事でしたし。", 17 | "user": "U4LGTMTMK", 18 | "type": "message" 19 | }, 20 | { 21 | "ts": "1623800369.044200", 22 | "text": "コメントありがとうございます!では控えさせていただきます。", 23 | "user": "U7GSVRQ6S", 24 | "type": "message" 25 | } 26 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/91/1625856353.075000.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1625856353.075000", 4 | "text": "【募】下記のクラスの名前、すでにあればそれ、なければアイディア\n```class Functor f => ____ f where\n get :: f a -> a```", 5 | "user": "U4L0B71L1", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1625869358.075100", 10 | "text": "Unwrap とかでいいんじゃないっすか", 11 | "user": "U4LGTMTMK", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1625869401.075400", 16 | "text": "`Copointed` ですかねえ\n\n", 17 | "user": "U578W9676", 18 | "type": "message" 19 | }, 20 | { 21 | "ts": "1625885226.075800", 22 | "text": "おっ、ありがとうございます!", 23 | "user": "U4L0B71L1", 24 | "type": "message" 25 | } 26 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/91/1625976050.082000.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1625976050.082000", 4 | "text": "あ、期限書いてない", 5 | "user": "U4L0B71L1", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1625976196.082200", 10 | "text": "書いた", 11 | "user": "U4L0B71L1", 12 | "type": "message" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/92/1626200716.092000.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1626200716.092000", 4 | "text": "higher kinded data の使いどころかと思ったけど微妙に babies とは違う型クラスができた……\n```-- barbies\nclass FunctorB (b :: (k -> Type) -> Type) where\n bmap :: (forall a . f a -> g a) -> b f -> b g\n\n-- 自作\nclass FunctorB b where\n bmap :: (Functor f, Functor g) => (forall a. f a -> g a) -> b f -> b g```\nこれ ↓ を\n```data Foo =\n Foo [(Bar, Buzz)]```\nこう ↓ したかった\n```data Foo f =\n Foo (f [f (f Bar, f Buzz)])```\nbarbies だとこう ↓ なる\n```data Foo f =\n Foo (f [(bar, Buzz)])```", 5 | "user": "U4L0B71L1", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1626367861.095500", 10 | "text": "重ね着バービー人形 ", 11 | "user": "U4L0B71L1", 12 | "type": "message" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/92/1627643113.002900.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1627643113.002900", 4 | "text": "機械的コードフォーマッタ導入したいけどみんな末尾にカンマ置くから使いたくないなあと思ってたら、\n[fourmolu/fourmolu: A fourk of ormolu that uses four space indentation and allows arbitrary configuration. Don't like it? PRs welcome!]()\nが半年前ぐらいに先頭カンマ実装してることを知って、\n使っていくか悩み始めています。", 5 | "user": "U57CUMWQ6", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1627887257.007900", 10 | "text": "いつからかは分かりませんが、brittanyも先頭カンマですね", 11 | "user": "ULMGVGLP3", 12 | "type": "message" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/92/1627703177.006500.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1627703177.006500", 4 | "text": "ghcup, Windowsもサポートされてたんですね! ", 5 | "user": "U4LGTMTMK", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1627718391.006800", 10 | "text": "おっ、ghc-man どうしような", 11 | "user": "U4L0B71L1", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1627720423.007400", 16 | "text": "まあ切り替える方式が違うだろうし PowerShell フレンドリーじゃないだろうからこっちはこっちでやってくか", 17 | "user": "U4L0B71L1", 18 | "type": "message" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/92/1629156000.020400.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1629156000.020400", 4 | "text": "ICFP 2021の発表が早くも公開されているそうです! :dash:\nどれがHaskell関係のconferenceのものかぱっと見分かりづらい :confused:\n", 5 | "user": "U4LGTMTMK", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1629414657.027700", 10 | "text": "すみません、これざっと見た感じICFP本体での発表しか入っていないみたいで、Haskell SymposiumやHIWは含まれていないようです。\nそれでもHaskellと名が付く発表が一つありましたが。", 11 | "user": "U4LGTMTMK", 12 | "type": "message" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/92/1629466360.028800.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1629466360.028800", 4 | "text": "", 5 | "user": "U4L0B71L1", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1629466506.029000", 10 | "text": "30以上のフィールドのレコード、使たことないな……", 11 | "user": "U4L0B71L1", 12 | "type": "message" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/92/1629545174.029600.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1629545174.029600", 4 | "text": "残念ながら、先日のGHC 8.10.6にはAppleツールチェーン由来のバグがあるため、近々8.10.7をリリース予定とのことです。\n[Haskell-cafe] The State of GHC 8.10\n", 5 | "user": "U55V441FS", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1630030823.000900", 10 | "text": "出ましたね。GHC 8.10.7。\n", 11 | "user": "U4LGTMTMK", 12 | "type": "message" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/92/1629685901.031100.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1629685901.031100", 4 | "text": "つい最近更新されたようなので。定期的に共有したいですねー。\n", 5 | "user": "U4LGTMTMK", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1630145482.001700", 10 | "text": "スレッドの追加テスト", 11 | "user": "U4LGTMTMK", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1630145484.001900", 16 | "text": "スレッドの追加テスト2", 17 | "user": "U4LGTMTMK", 18 | "type": "message" 19 | }, 20 | { 21 | "ts": "1630145753.002100", 22 | "text": "バッチリ生成できたようです! :relieved:", 23 | "user": "U4LGTMTMK", 24 | "type": "message" 25 | }, 26 | { 27 | "ts": "1630190163.002500", 28 | "text": ":man-bowing: すみません、文脈を共有してませんでした。\nslack-logのこちらの修正 の、リリース後の確認をしていました。", 29 | "user": "U4LGTMTMK", 30 | "type": "message" 31 | } 32 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/93/1633166027.027900.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1633166027.027900", 4 | "text": "うーん、GHC でコンパイルできるのに hlint でパースに失敗する", 5 | "user": "U4L0B71L1", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1633167146.028000", 10 | "text": "サポートしてない言語拡張とかあるあるよね", 11 | "user": "U4LGTMTMK", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1633307967.029100", 16 | "text": "`pattern` という変数名がダメっぽい\nキーワードに認識してんのかな", 17 | "user": "U4L0B71L1", 18 | "type": "message" 19 | }, 20 | { 21 | "ts": "1633308271.029300", 22 | "text": "hlint に `-XNoPatternSynonyms` 与えると通った", 23 | "user": "U4L0B71L1", 24 | "type": "message" 25 | } 26 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/93/1634264083.037100.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1634264083.037100", 4 | "text": ":warning: aesonパッケージにおけるHash DoS脆弱性について :warning: ビルド時のフラグで利用する連想配列の実装を、従来の(脆弱な)HashMapか(安全な)Mapか選べるようになったので、例えばよくあるREST APIのような、aesonを使って外からのJSONを処理するアプリケーションは、フラグの設定が推奨されます\n詳細: ", 5 | "user": "U4LGTMTMK", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1634721915.045800", 10 | "text": "このスレッドの件、試しに開発中の でaesonのバージョンを上げてみたんですが、aesonに間接的に依存しているパッケージに依存していると、まだサポートできていないものがあって厄介ですね... :disappointed:\n\nのとおり、例えば現状yamlパッケージを使う場合は、stack.yamlの `extra-deps` に `- yaml-0.11.7.0` などと追記することになりそうです。", 11 | "user": "U4LGTMTMK", 12 | "type": "message" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/94/1635521085.016200.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1635521085.016200", 4 | "text": "", 5 | "user": "U4L0B71L1", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1635521144.016500", 10 | "text": "", 11 | "user": "U4L0B71L1", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1635521303.016800", 16 | "text": "", 17 | "user": "U4L0B71L1", 18 | "type": "message" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/94/1635650900.021400.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1635650900.021400", 4 | "text": "MacにghcupでGHC 9.2.1を入れてghcup的に9.2.1がdefaultではない状態で~/.ghcup/bin/ghci-9.2.1を実行するとGHCiが起動に失敗する(あるいはdefaultとなっているバージョンのGHCiが起動する)んですが、他に同様の症状の方はいますか?", 5 | "user": "UGM9F7XQS", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1635656261.023200", 10 | "text": "再現します。直接起動するとDIRが~/.ghcup/binになるのでそこにあるghciが選ばれるみたいですね", 11 | "user": "U4M9NJ7QE", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1635657086.023600", 16 | "text": "ありがとうございます。GHCのGitLabにIssueを立てることにします。", 17 | "user": "UGM9F7XQS", 18 | "type": "message" 19 | }, 20 | { 21 | "ts": "1635658217.023900", 22 | "text": "", 23 | "user": "UGM9F7XQS", 24 | "type": "message" 25 | } 26 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/94/1636293816.041900.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1636293816.041900", 4 | "text": "GHC から Windows 32 ビット版のサポートがなくなったのってバージョンいくつからでしたっけ?", 5 | "user": "U4L0B71L1", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1636296788.042100", 10 | "text": "9.0 ?\n", 11 | "user": "U56L7EVNY", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1636326001.042500", 16 | "text": "8.6.4 っぽいか\n", 17 | "user": "U4L0B71L1", 18 | "type": "message" 19 | }, 20 | { 21 | "ts": "1636328602.042700", 22 | "text": "公式のbindist配布をやめたバージョンと、ソースコード的に32ビットWindows対応をやめたバージョンが違うのかもですね", 23 | "user": "UGM9F7XQS", 24 | "type": "message" 25 | }, 26 | { 27 | "ts": "1636345499.050600", 28 | "text": "ちょっとそうかもしれんなーと思ってました", 29 | "user": "U4L0B71L1", 30 | "type": "message" 31 | } 32 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/94/1636593820.071200.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "GHC 9.2.1は、Linux依存のrealpathコマンドを使っていて、macOSではまともにインストールさえできない。。。", 4 | "type": "message", 5 | "ts": "1636593820.071200", 6 | "user": "U56MBRKR9" 7 | }, 8 | { 9 | "text": " の修正をしてて、ちょーど同じ問題に当たりました :innocent:\nただ、1週間ぐらい前にちょーど修正コミットが master には入ったようです :relieved:\n\n(頑張ってパッチを当ててみます。。。)", 10 | "type": "message", 11 | "ts": "1639413483.213400", 12 | "user": "U56L7EVNY" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/94/1636619243.077600.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1636619243.077600", 4 | "text": "ウェブ上で Haskell の GitHub Actions をセットアップすると古いメンテナンスされてないアクションが使用されてしまう問題が改修されました~\n", 5 | "user": "U4L0B71L1", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1636776398.080900", 10 | "text": "マージまだだったね", 11 | "user": "U4L0B71L1", 12 | "type": "message" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/95/1637028729.092700.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1637028729.092700", 4 | "text": "ドメインが乗っ取られているかとか、判断できないなぁ。", 5 | "user": "U56MBRKR9", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1637064411.098400", 10 | "text": "nixのようにファイルのurlとデータのハッシュの対が他のgitのようなリポジトリがある気にならなくなるでしょうか。", 11 | "user": "U74KTAG0N", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1637064588.099600", 16 | "text": "関係ないかもしれないですが。", 17 | "user": "U74KTAG0N", 18 | "type": "message" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/95/1637063234.095600.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1637063234.095600", 4 | "text": "ゲッター・セッターの関係においてDistributiveと対をなす構造、名付けてLogisticを発見したので、ライブラリとしてリリースしました。data V3 a = V3 a a aのようなデータ型からジェネリクスでインスタンスを導出し、let V3 f g h = settersとすると、各フィールドを更新する関数f, g, hが得られます。考察対象としても面白いですが実用性もありそうです ", 5 | "user": "U4KUNQF9N", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1637068201.100300", 10 | "text": "すごい :clap:\nTwitter の Setter のものと違って最終的にmodifer(?) `(a -> a) -> t a -> t a` が得られるライブラリのデザインになったんですね:eyes:", 11 | "user": "U4KPPQW7K", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1637068905.100800", 16 | "text": "ですね。`(a -> a) -> t a -> t a` にすることでComposeのインスタンスが定義できるようになりました", 17 | "user": "U4KUNQF9N", 18 | "type": "message" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/95/1637287667.115800.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "stick が「刺す」とか「刺さる」という意味で、その過去分詞の stuck が「止まる」「にっちもさっちも行かなくなる」という意味で使われている( The car was stuck in the snow. とか)ので、そこから派生したんだと思います。 英語での用例: ", 4 | "type": "message", 5 | "ts": "1637287667.115800", 6 | "user": "U61BA2X0U" 7 | }, 8 | { 9 | "text": "刺さるはspike(血糖値スパイク的な)から来てるのかと思ってた\n確かにstuckを直訳すると刺さったになりますね", 10 | "type": "message", 11 | "ts": "1638166038.147100", 12 | "user": "U02KK6NUFFE" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/95/1637972744.144700.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "今週のHaskell Weeklyから。Maybeやタプルなど既存のstrictじゃないデータ型をラップするだけでStrictにしてくれる魔法のような型を提供してくれるパッケージ。data familyやbidirectional pattern synonymでこれが実現できちゃうとは思わなかった :sugoi:\n", 4 | "type": "message", 5 | "ts": "1637972744.144700", 6 | "user": "U4LGTMTMK" 7 | }, 8 | { 9 | "text": "へ~", 10 | "type": "message", 11 | "ts": "1637976191.144800", 12 | "user": "U4L0B71L1" 13 | }, 14 | { 15 | "text": "generic 使うともっと簡単に使えるようにならんかな", 16 | "type": "message", 17 | "ts": "1637976693.145000", 18 | "user": "U4L0B71L1" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/95/1638260974.162600.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "monad-skeleton-0.2をリリースしました。Freeモナド、あるいはOperationalモナドと呼ばれる、命令の並びと実際の挙動を分離する――つまり、プログラムの骨と肉を分ける構造を提供するライブラリです。ナイーブな実装は>>=が遅い、CPS版は命令を一つずつ取り出せないという欠点を解決するために提案されたreflection without remorse(キューを使って命令を格納する)を実装しており、実装の簡潔さとパフォーマンスが売りです。応用例として、extensibleと組み合わせて拡張可能作用を実装したがあります ", 4 | "type": "message", 5 | "ts": "1638260974.162600", 6 | "user": "U4KUNQF9N" 7 | }, 8 | { 9 | "text": "懐かしい", 10 | "type": "message", 11 | "ts": "1638507754.168500", 12 | "user": "U5LEE6C1J" 13 | }, 14 | { 15 | "text": "最初のリリースからもうすぐ7年ですね。当初はSeq AnyにunsafeCoerceで関数を詰め込んでいました", 16 | "type": "message", 17 | "ts": "1638508301.168700", 18 | "user": "U4KUNQF9N" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/95/1639396854.212900.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "これですかね ", 4 | "type": "message", 5 | "ts": "1639396854.212900", 6 | "user": "U4L0B71L1" 7 | }, 8 | { 9 | "text": "それですねえ(リンク貼ったほうが良かったな)\nプロジェクト巡ってたら見つけてCircleCIサポート追加するかGitHub Actionsに移行するか悩み中ですね\n末端のアプリケーションならGHCのバージョンなんてその時一つで良いんですが、OSSライブラリ開発してるとなると複数テストが必要ですからねえ", 10 | "type": "message", 11 | "ts": "1639397428.213100", 12 | "user": "U57CUMWQ6" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/95/1639703712.215900.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "CI で cabal test を使っていると、テストに失敗したときに、どのテストが失敗したか分からなくて「使えん」と思っていたのだけど、標準出力に表示するオプションがあるんですね。知りませんでした。\n", 4 | "type": "message", 5 | "ts": "1639703712.215900", 6 | "user": "U56MBRKR9" 7 | }, 8 | { 9 | "text": "FYI ", 10 | "type": "message", 11 | "ts": "1640266266.223100", 12 | "user": "U4L0B71L1" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/95/1639710877.216400.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "すばらしい。詳しい。\n", 4 | "type": "message", 5 | "ts": "1639710877.216400", 6 | "user": "U4LGTMTMK" 7 | }, 8 | { 9 | "text": " にも追記しておきました。結構増えてきましたね... 大まかにセクションを分けてるけどちゃんと名前をつけて分類したい", 10 | "type": "message", 11 | "ts": "1639730112.217000", 12 | "user": "U4LGTMTMK" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/96/1639807805.218100.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "超小物パッケージです。`exitSuccess` 関数を `IO` 以外のMonadから呼ぶためだけに作りました。\n", 4 | "type": "message", 5 | "ts": "1639807805.218100", 6 | "user": "U4LGTMTMK" 7 | }, 8 | { 9 | "text": "まだドキュメントが生成されていないようなのでソースを直接共有しちゃいます\n", 10 | "type": "message", 11 | "ts": "1639807844.218300", 12 | "user": "U4LGTMTMK" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/96/1639981418.221400.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "> 今までは、どの OS であれ `ghc-X.Y.Z` のようなディレクトリ名でした。しかし、9.2.1 の Windows と Mac、9.0.1 の Windows は(なぜか)`ghc-9.2.1-x86_64-apple-darwin` のような `tar.xz` ファイル名になっていました。仕方がないので、GHC のバージョンと OS によってディレクトリ名が変わるように修正しました:\n> by <@U56L7EVNY> \n分かる…… これなんで変わったのかな\nghcman でもこの対応入れた\n\nCabal も 3.4 からパスの命名規則変わったんすよね", 4 | "type": "message", 5 | "ts": "1639981418.221400", 6 | "user": "U4L0B71L1" 7 | }, 8 | { 9 | "text": "なんか色々とすごい変わりましたよね、、、", 10 | "type": "message", 11 | "ts": "1639982507.221700", 12 | "user": "U56L7EVNY" 13 | }, 14 | { 15 | "text": "ビルドシステムが従来のmakeからHadrianに変わった影響かなあ、という気がします。", 16 | "type": "message", 17 | "ts": "1639982850.221900", 18 | "user": "UGM9F7XQS" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/96/1641050509.235000.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "ghcupにGHC 9.0.2が降ってこないと思ったらメンテナのパソコンが修理中で署名ができない状態だそうです ", 4 | "type": "message", 5 | "ts": "1641050509.235000", 6 | "user": "UGM9F7XQS" 7 | }, 8 | { 9 | "text": "ghcupにGHC 9.0.2が降ってきたようです", 10 | "type": "message", 11 | "ts": "1641379839.237100", 12 | "user": "UGM9F7XQS" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/96/1642126327.007000.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "マジか。知らなかった。 ", 4 | "type": "message", 5 | "ts": "1642126327.007000", 6 | "user": "U4LGTMTMK" 7 | }, 8 | { 9 | "text": "これがそのときのソースらしいです。\n", 10 | "type": "message", 11 | "ts": "1642126467.007300", 12 | "user": "U4LGTMTMK" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/96/1644812798.129959.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "リストは Haskell ソース上に定義がないから Hackage 上でリストが何のインスタンスになってるかの一覧はない?", 4 | "type": "message", 5 | "ts": "1644812798.129959", 6 | "user": "U4L0B71L1" 7 | }, 8 | { 9 | "text": "Haskellのソース上に定義がない、なんてことはなくて にあるんですが、確かにHackageにはないですね... :disappointed:", 10 | "type": "message", 11 | "ts": "1644814161.137679", 12 | "user": "U4LGTMTMK" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/97/1645053430.368109.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "今年のZuriHacは6月11日から13日まで。もう登録もできるらしい\n", 4 | "type": "message", 5 | "ts": "1645053430.368109", 6 | "user": "U4LGTMTMK" 7 | }, 8 | { 9 | "text": "Haskell初心者ですが、去年参加したら、初心者向けのセッションもたくさんあって楽しかったし勉強になりました〜。今年も参加しようかと思っています。", 10 | "type": "message", 11 | "ts": "1645093060.140289", 12 | "user": "U027BSBUHMH" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/97/1646349654.474939.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "", 4 | "type": "message", 5 | "ts": "1646349654.474939", 6 | "user": "U4LGTMTMK" 7 | }, 8 | { 9 | "text": "「(ほぼ)標準ライブラリー」の使い方の本みたいですね\ndirectory とか network とか mtl とか aeson とか載ってるのかな 後は何だろう", 10 | "type": "message", 11 | "ts": "1646352919.849589", 12 | "user": "U4L0B71L1" 13 | }, 14 | { 15 | "text": "冒頭でregexの話してるし、regexとかじゃないっすか。関連してmegaparsecとかも出しそうだけど", 16 | "type": "message", 17 | "ts": "1646357656.483229", 18 | "user": "U4LGTMTMK" 19 | }, 20 | { 21 | "text": "『Practical Haskell』の人なんですね", 22 | "type": "message", 23 | "ts": "1646443083.821579", 24 | "user": "U4L0B71L1" 25 | } 26 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/97/1647257957.991509.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "\n朝日ネット 技術者ブログで、Haskellと余代数に関する記事が公開されました。", 4 | "type": "message", 5 | "ts": "1647257957.991509", 6 | "user": "U01A20R5Z0Q" 7 | }, 8 | { 9 | "text": "オブジェクト指向をこのように解釈するのは初めて見ましたがこれまでで一番納得感のある解釈で、目からうろこという感じです。\nところで、 MealyMachine のところで\n```あるいはもっとオブジェクト指向風に、出力の取得と状態遷移の操作を分けたいならば、メソッドを2つに分けることもできるでしょう:\n\ncodata MealyMachine a b where\n Get :: MealyMachine a b -> b\n TransOnly :: MealyMachine a b -> a -> MealyMachine a b```\nと書かれているのですが、このようにしてしまうとこれはミーリ型ではなくムーア型マシンになってしまっているのではないでしょうか?^^;", 10 | "type": "message", 11 | "ts": "1647360264.229799", 12 | "user": "UF8SE896V" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/97/1647925150.102249.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "リリースされていないGHC向けに修正されたパッケージを配信するhead.hackageを任意のバージョンのGHC向けに拡張することで、新しいGHCにパッケージが追従する速度を高めよう、という案\n", 4 | "type": "message", 5 | "ts": "1647925150.102249", 6 | "user": "U4LGTMTMK" 7 | }, 8 | { 9 | "text": "head.hackageがどんなものか、については の記事の後半の方に書きました。", 10 | "type": "message", 11 | "ts": "1647925193.737069", 12 | "user": "U4LGTMTMK" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/98/1650355795.738429.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "Emacsのcomintでの起動が便利", 4 | "type": "message", 5 | "ts": "1650355795.738429", 6 | "user": "U57CUMWQ6" 7 | }, 8 | { 9 | "text": "comint ってどんなですかん", 10 | "type": "message", 11 | "ts": "1650370044.393909", 12 | "user": "U4L0B71L1" 13 | }, 14 | { 15 | "text": "こういう感じにテキストエディタの画面の一部として連携してghciを起動できるので、テキストをエディットするようにスクロールやコピペや部分読み込みが出来る感じですね\nVSCodeにも似たような機能はある気がしてきました", 16 | "type": "message", 17 | "ts": "1650373940.557319", 18 | "user": "U57CUMWQ6" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/99/1654178448.929169.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "期限切れ問題また起きてるみたいですけどStackが悪いのかHackageが悪いのかどっちなのかわからない\n< error: <repo>/mirrors.json is expired · Issue #3731 · commercialhaskell/stack>", 4 | "type": "message", 5 | "ts": "1654178448.929169", 6 | "user": "U57CUMWQ6" 7 | }, 8 | { 9 | "text": "コメントされたワークアラウンド使ってましたが復旧したらしいですね", 10 | "type": "message", 11 | "ts": "1654220355.122159", 12 | "user": "U57CUMWQ6" 13 | }, 14 | { 15 | "text": "\nこれで3回目のようですね。", 16 | "type": "message", 17 | "ts": "1654227326.582219", 18 | "user": "U74KTAG0N" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/99/1656898367.069619.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "```class (Alternative m, MonadError e m) => ??? e m```\nこんなクラスがほしくなった\n制約は(雰囲気)\n```throwError e <|> m ≡ m```\nもしくは\n```m <|> throwError e ≡ m```\n", 4 | "type": "message", 5 | "ts": "1656898367.069619", 6 | "user": "U4L0B71L1" 7 | }, 8 | { 9 | "text": "そういう `newtype` を作ればいいという話ではなく?", 10 | "type": "message", 11 | "ts": "1656902913.189939", 12 | "user": "U4LGTMTMK" 13 | }, 14 | { 15 | "text": "型じゃなくて型クラスがあるといいなという気持ちでした\nライブラリーは多相にしておいて具象はユーザーに選ばせるスタイル", 16 | "type": "message", 17 | "ts": "1656906709.883289", 18 | "user": "U4L0B71L1" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/C4M4TT8JJ/99/1658186144.880249.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "フリープランでも過去のメッセージ、制限なく見れるようになるらしい", 4 | "type": "message", 5 | "ts": "1658186144.880249", 6 | "user": "U4L0B71L1" 7 | }, 8 | { 9 | "text": "無料プランの過去のメッセージは90日までですぞ!", 10 | "type": "message", 11 | "ts": "1658188180.751359", 12 | "user": "U4LGTMTMK" 13 | }, 14 | { 15 | "text": "メッセージ数制限から日数制限になったのか!", 16 | "type": "message", 17 | "ts": "1658188286.869109", 18 | "user": "U4L0B71L1" 19 | }, 20 | { 21 | "text": "↑ 制限はありま~す(別の形で\n:bow:", 22 | "type": "message", 23 | "ts": "1658188575.442219", 24 | "user": "U4L0B71L1" 25 | } 26 | ] -------------------------------------------------------------------------------- /docs/json/C5666B6BB/100/1646549201.347189.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "cabal.projectのリファレンス を読んでいてわからなくなったのですが、例えばgit submoduleとしてプロジェクトディレクトリーに置いたパッケージを依存パッケージとして使いたい場合、 `extra-packages` を使うのが適当なのでしょうか?", 4 | "type": "message", 5 | "ts": "1646549201.347189", 6 | "user": "U4LGTMTMK" 7 | }, 8 | { 9 | "text": "自己解決しました。 `extra-packages` はそもそもそういう用途ではないし、いずれにせよまだ使用できないみたいですね。\n正しくは、プロジェクトのcabalファイルと同様`packages`に列挙するみたいですね。\nstackの `extra-deps` に釣られて誤解してました...", 10 | "type": "message", 11 | "ts": "1646553515.647339", 12 | "user": "U4LGTMTMK" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C5666B6BB/100/1646652162.319549.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": " というものを最近見たのですが、 Haskell が hsenv っていうのはイマドキどうなんでしょうかね?", 4 | "type": "message", 5 | "ts": "1646652162.319549", 6 | "user": "UF8SE896V" 7 | }, 8 | { 9 | "text": "実態は :wakarimasen: が、最終更新日からしてメンテされてなさそうですね... ", 10 | "type": "message", 11 | "ts": "1646653072.878289", 12 | "user": "U4LGTMTMK" 13 | }, 14 | { 15 | "text": "やっぱもうみんな使ってないですよね。\nanyenv が何を思って hsenv を採用したのかというところが気になるわけですが、ほかの言語のリストも見る限り単に「〇〇envというやつを集めてみた」だけなのかもしれませんね", 16 | "type": "message", 17 | "ts": "1646657952.485829", 18 | "user": "UF8SE896V" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/C5666B6BB/100/1647940384.012959.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "<@U4KNU6N48> relational-queryはOFFSET/LIMITが生成できないようですが、これには何か背景があるのですか?(見落としているだけだったらすみません)", 4 | "type": "message", 5 | "ts": "1647940384.012959", 6 | "user": "U4KUNQF9N" 7 | }, 8 | { 9 | "text": "返事が遅くなってすいません。\n\n\n`OFFSET n FOWS` や `FETCH FIRST n ROWS ONLY` を付加したものをさらに JOIN するような使い方を想定しているでしょうか?\n\nそうでないなら、\n\n\n\nの `QuerySuffix` の位置に `[OFFSET, \"3\", ROWS]` や `[FETCH, FIRST, \"5\", ROWS, ONLY]` 等渡すことで Query を生成することができます。", 10 | "type": "message", 11 | "ts": "1650805334.353049", 12 | "user": "U4KNU6N48" 13 | }, 14 | { 15 | "text": "理解しました。ありがとうございます!", 16 | "type": "message", 17 | "ts": "1650875827.472729", 18 | "user": "U4KUNQF9N" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/C5666B6BB/101/1652233415.103749.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "それ以前がどうだったかは知らないです", 4 | "type": "message", 5 | "ts": "1652233415.103749", 6 | "user": "UK0MXUCAV" 7 | }, 8 | { 9 | "text": "Git の diff を最小化するという観点では、 export 末尾にコンマ入れて良いのは理に適ってます", 10 | "type": "message", 11 | "ts": "1652233461.609789", 12 | "user": "UK0MXUCAV" 13 | }, 14 | { 15 | "text": "ありがとうございます。imports の方にも書けるんですね。他の場所でも許しても良さそうですが、どうしてこうも中途半端なんでしょうね。", 16 | "type": "message", 17 | "ts": "1652233738.840919", 18 | "user": "U56MBRKR9" 19 | }, 20 | { 21 | "text": "export, import で出来るし、正直リストやレコードについても許してもいいのになと思いますよね。Dhall なんかだと、リストの頭(!)にも書けるようになっていて、デフォルトのフォーマッタでも長くなりすぎると先頭カンマ込みで揃えるようになっていたりします。", 22 | "type": "message", 23 | "ts": "1652233905.691479", 24 | "user": "UK0MXUCAV" 25 | } 26 | ] -------------------------------------------------------------------------------- /docs/json/C5666B6BB/102/1661954651.345509.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "cabal.project.local に相当するような stack.yaml のやつってありますか?", 4 | "type": "message", 5 | "ts": "1661954651.345509", 6 | "user": "U4L0B71L1" 7 | }, 8 | { 9 | "text": "知る限りないですね。 `--stack-yaml` オプションで違うファイルを指定する、しか道はなかったように思います。", 10 | "type": "message", 11 | "ts": "1661955981.992119", 12 | "user": "U4LGTMTMK" 13 | }, 14 | { 15 | "text": "ふむう\nYAML だから stack.yaml を読んでそれにフィールドを追加する別の yaml ファイルを作りますかねえ", 16 | "type": "message", 17 | "ts": "1661957894.258989", 18 | "user": "U4L0B71L1" 19 | }, 20 | { 21 | "text": "めっちゃ大きくなるならDhallを使う、とか...?", 22 | "type": "message", 23 | "ts": "1661958073.417129", 24 | "user": "U4LGTMTMK" 25 | } 26 | ] -------------------------------------------------------------------------------- /docs/json/C5666B6BB/102/1668434284.691869.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "GHCの新マイナーバージョンが出てからHLSの対応版がリリースされるまでタイムラグがあると思うんですが、皆さんどうしてますか?HLS対応の古いGHCを使う?", 4 | "type": "message", 5 | "ts": "1668434284.691869", 6 | "user": "UGM9F7XQS" 7 | }, 8 | { 9 | "text": "対応版が出るまで待つことが多いですね(メジャーバージョンが同じで動くものがあればビルドだけ新しいのを使えば型周りのバグとかでない限りコンパイルは通るはずなので)。\n\n新しいメジャーバージョンだったら自分でHLSをビルドしますかね。ghcupを使うとそれなりに自動でカスタムコンパイルできます ", 10 | "type": "message", 11 | "ts": "1668435145.114929", 12 | "user": "UK0MXUCAV" 13 | }, 14 | { 15 | "text": "生のGHCしか使わないので、気になりません。", 16 | "type": "message", 17 | "ts": "1668436508.172739", 18 | "user": "U56MBRKR9" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/C5666B6BB/102/1669386398.293779.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "build=Linux x64, target=Linux arm32 (Raspberry Pi 2 B) なクロスコンパイル GHC をビルドする手順として今使えるもしくは比較的最新な情報を知ってる人いませんか?", 4 | "type": "message", 5 | "ts": "1669386398.293779", 6 | "user": "U4L0B71L1" 7 | }, 8 | { 9 | "text": "クロスコンパイラーのビルドをやってみましたが、ちょいちょい問題があって一筋縄ではいかないですね。私の作業メモです: ", 10 | "type": "message", 11 | "ts": "1671955513.698979", 12 | "user": "UGM9F7XQS" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C5666B6BB/103/1676619242.957009.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "type": "message", 4 | "user": "U56MBRKR9", 5 | "ts": "1676619242.957009", 6 | "text": "GHCの管理が phabricator から gitlab になり、例えば\n\nのようなリンクが追えないのですが、gitlabへはどう変換されているのでしょうか?" 7 | }, 8 | { 9 | "type": "message", 10 | "user": "U4L0B71L1", 11 | "ts": "1676908787.080769", 12 | "text": "試しに同じ番号の Gitlab イシューを見てみたんですがもしかするとこれだったりしませんか?\n" 13 | }, 14 | { 15 | "type": "message", 16 | "user": "U56MBRKR9", 17 | "ts": "1677072239.245669", 18 | "text": "いえ、違います。" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/C5666B6BB/103/1676844723.772979.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "type": "message", 4 | "user": "U015L5JEP8D", 5 | "ts": "1676844723.772979", 6 | "text": "代替Preludeを使いたいと考えているのですが、新しくてまとまっている比較記事などはありますか?" 7 | }, 8 | { 9 | "type": "message", 10 | "user": "U4LGTMTMK", 11 | "ts": "1676895717.572679", 12 | "text": "まとまった記事は特に知りませんが、比較的新しいものだとrioが有名ですし個人的にもおすすめです。" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C5666B6BB/103/1677283347.252899.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "type": "message", 4 | "user": "U4KU9ABL0", 5 | "ts": "1677283347.252899", 6 | "text": "言語拡張 CPP を指定したソースコードの確認のために、CPPの処理だけが済んだ段階のソースコードを出力したいと思うのですが、ghc オプション指定でできないものでしょうか?" 7 | }, 8 | { 9 | "type": "message", 10 | "user": "U5G2BCVBN", 11 | "ts": "1677289353.681439", 12 | "text": "```The phase at which to STOP processing is determined by a command-line\noption:\n\n -E stop after generating preprocessed, de-litted Haskell\n (used in conjunction with -cpp)```\nなので, `-E` オプションで C-preprocess までで処理が止まって .hspp ファイルが吐かれるので,\n```ghc -E Foo.hs\ncat Foo.hspp```\nで確認できるかと." 13 | }, 14 | { 15 | "type": "message", 16 | "user": "U4KU9ABL0", 17 | "ts": "1677289688.620349", 18 | "text": "ありがとうございます。見落してました。:sweat_smile:" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/C5666B6BB/103/1678493250.805059.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "type": "message", 4 | "user": "UL1HFJATE", 5 | "ts": "1678493250.805059", 6 | "text": "あるpackage の executable 中に入っている module の関数が欲しくて、copy-and-paste するつもりなのですが、こういう時って LICENSE ファイルを複数作るか、追記するか、どうするのが普通なんでしょう?" 7 | }, 8 | { 9 | "type": "message", 10 | "user": "U4L0B71L1", 11 | "ts": "1678522672.169039", 12 | "text": "これでいいのかよく分かってないですが LICENSE ファイルに追記してます\n" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C5666B6BB/103/1680423862.784269.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "type": "message", 4 | "user": "U4LGTMTMK", 5 | "ts": "1680423862.784269", 6 | "text": "GHCupって、使用するGHCなどのバージョンをディレクトリーによって置き換える機能はないのでしょうか?ざっとドキュメントを読んだ限り見当たらなかったので。GHCはcabal.projectなどで簡単に切り替えられるからいいんですけど、ghcupでインストールされるhaskell-language-serverがバイナリーを付けてくれないバージョンだったもので..." 7 | }, 8 | { 9 | "type": "message", 10 | "user": "UK0MXUCAV", 11 | "ts": "1680424405.298879", 12 | "text": "IDEが用いるバージョンの固定であれば、VSCodeならhaskell.toolchain 項目で具体的なバージョン集合を指定できますね。HLSの公式バイナリが対応していないバージョンのGHCを使う場合はghcup compile機能で自前でHLSをビルドして、そのカスタムビルドのバージョン文字列を指定して使ったりしてます。\n他のエディタでも多分使えるはずだとは思いますが使ったことがないのでわからないですね" 13 | }, 14 | { 15 | "type": "message", 16 | "user": "U4LGTMTMK", 17 | "ts": "1680424447.874769", 18 | "text": "確かに。LSPのプラグインの設定を変えるという手がありましたね!" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/C5666B6BB/103/1684024800.366699.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "type": "message", 4 | "user": "U04LCUXALJ2", 5 | "ts": "1684024800.366699", 6 | "text": "```fix1 :: ((b -> c) -> b -> c) -> b -> c\nfix1 = fix\nfix :: (a -> a) -> a\nfix f = flip fix1 f $ \\g h -> _```\n`fix`を`fix1`で定義したいのですが,上の`_`に当てはまる式として以下のどれが適切でしょうか?\n```1. f $ g f\n2. f $ g h\n3. h $ g f\n4. h $ g h```\nいずれも下記のテストを通過しました.上記1-4のいずれかが失敗するテストも併せて募集します.\n```print $ fix $ const () -- ()\nprint $ flip fix 5 $ \\rec n -> if n == 0 then 1 else n * rec (pred n) -- 120```" 7 | }, 8 | { 9 | "type": "message", 10 | "user": "U04LCUXALJ2", 11 | "ts": "1684024871.824609", 12 | "text": "" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C5666B6BB/104/1686190934.052419.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "type": "message", 4 | "user": "U56MBRKR9", 5 | "ts": "1686190934.052419", 6 | "text": "フォーマッタとして hindent を使っている人はいませんか?\nCPPを使っていると、ことごとくフォーマットできずにエラーになるんですが、そういうものですか?" 7 | }, 8 | { 9 | "type": "message", 10 | "user": "U56MBRKR9", 11 | "ts": "1686202097.844719", 12 | "text": "CPPで許される文法の一部だけ対応しているみたい。" 13 | }, 14 | { 15 | "type": "message", 16 | "user": "U56MBRKR9", 17 | "ts": "1686280265.956939", 18 | "text": "`fourmolu` がいけてるので、こちらを使うことにしました。" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/C5666B6BB/104/1686720298.292579.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "type": "message", 4 | "user": "U56MBRKR9", 5 | "ts": "1686720298.292579", 6 | "text": "Hackage の upload 機能が死んでいるようなのですが、どこに連絡すればいいですか?\nHackageには書かれてないように思いました。" 7 | }, 8 | { 9 | "type": "message", 10 | "user": "U4LGTMTMK", 11 | "ts": "1686724299.263949", 12 | "text": "誰が管理してるのかとか細かいところは存じませんが、 ですかねぇ" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C5666B6BB/104/1687321140.257329.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "type": "message", 4 | "user": "U56MBRKR9", 5 | "ts": "1687321140.257329", 6 | "text": "Haskellのコードが書かれた大きなファイルを分割したいです。\nそのため関数の依存グラフが欲しいのですが、SourceGraphはもうメンテされてないようです。\nHaskellの関数の依存グラフを可視化するツールとかサービスは、他にありませんか?" 7 | }, 8 | { 9 | "type": "message", 10 | "user": "U01CFSSPZHB", 11 | "ts": "1687324111.239099", 12 | "text": "知り合いがこのツールを作りました。\n" 13 | }, 14 | { 15 | "type": "message", 16 | "user": "U56MBRKR9", 17 | "ts": "1687325086.601599", 18 | "text": "わー。\n素晴らしい。\nグラフが描けました。\nありがとうございました!" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/C5666B6BB/104/1688415525.784589.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "type": "message", 4 | "user": "U05A7BL0PST", 5 | "ts": "1688415525.784589", 6 | "text": "参照されていないモジュールを指摘してくれるツールってありますでしょうか?\ngolangでは、コンパイラーに厳しい指導をされたような。" 7 | }, 8 | { 9 | "type": "message", 10 | "user": "U4LGTMTMK", 11 | "ts": "1688430463.337419", 12 | "text": " はいかがでしょうか?" 13 | }, 14 | { 15 | "type": "message", 16 | "user": "U05A7BL0PST", 17 | "ts": "1688502961.726039", 18 | "text": "雑草と言う名前の草は無い。はずなんですが、知らぬ間にはこびっている。さて、草刈りに精を出すか。草刈り機の整備を始めてみたら、環境要件が厳し過ぎるぞ。" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/C5666B6BB/104/1690112065.483659.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "type": "message", 4 | "user": "U015L5JEP8D", 5 | "ts": "1690112065.483659", 6 | "text": "`callCC`の型はなぜ`forall r m a. ((forall b. a -> ContT r m b) -> ContT r m a) -> ContT r m a`ではなく`forall r m a b. ((a -> ContT r m b) -> ContT r m a) -> ContT r m a`なのでしょうか\n実際`callCC' f = callCC (\\exit -> f $ (\\ a -> absurd <$> exit a))`とすれば前者の型にでき、前者の型のほうが脱出用の継続(`callCC (\\exit -> ...)`のexit)の返り値の型が制限されず便利であるように思えます" 7 | }, 8 | { 9 | "type": "message", 10 | "user": "U4L0B71L1", 11 | "ts": "1690163286.903009", 12 | "text": "正解を知らないのですが高ランク多相を避けたかったんですかねえ" 13 | }, 14 | { 15 | "type": "message", 16 | "user": "UGM9F7XQS", 17 | "ts": "1690191614.740869", 18 | "text": "transformersパッケージはGHC拡張の使用に関して結構抑制的だった気がしますね\n追記:mtlパッケージのcallCC関数がそういうアレになっている理由にはならないか" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/C5666B6BB/104/1692853327.298529.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "type": "message", 4 | "user": "U02T0K000AV", 5 | "ts": "1692853327.298529", 6 | "text": "Haskell で JSON を受け取って JSON を返す簡単なAPIサーバー(インメモリのキャッシュや openapiやドキュメントの自動生成があるとなおよい)を立てる場合どのようなスタックを使いますか?\n\n参考となるレポジトリなどあれば教えてもらえると助かります." 7 | }, 8 | { 9 | "type": "message", 10 | "user": "U57CUMWQ6", 11 | "ts": "1692853963.737819", 12 | "text": "最近はServantを使っています\nOpenAPIとの連携機能もありますね\n\nキャッシュは模索中です" 13 | }, 14 | { 15 | "type": "message", 16 | "user": "U02T0K000AV", 17 | "ts": "1693550817.465599", 18 | "text": "ありがとうございます" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/C5666B6BB/104/1699181970.294899.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "type": "message", 4 | "user": "U4KU9ABL0", 5 | "ts": "1699181970.294899", 6 | "text": "指定した .ghci ファイルを読ませて doctest を起動する方法ってありますか?" 7 | }, 8 | { 9 | "type": "message", 10 | "user": "U4L0B71L1", 11 | "ts": "1699856948.141659", 12 | "text": "ちょっと調べたけど分からないですね" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C5666B6BB/105/1699850628.377719.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "type": "message", 4 | "user": "U015L5JEP8D", 5 | "ts": "1699850628.377719", 6 | "text": "`data` とレコード構文で定義した、一つだけコンストラクタを持つ型について、コンストラクタの各引数へのアクセサとなるLensを勝手に導出してくれるような方法はありますか?" 7 | }, 8 | { 9 | "type": "message", 10 | "user": "UK0MXUCAV", 11 | "ts": "1699851047.242539", 12 | "text": "`lens` パッケージの で定義されているmakeLenses などのマクロを使って定義を生成させるか、\n\n\n`generic-lens` パッケージと `OverloadedLabels` 言語拡張を使って `#hogeField` みたいな構文で自動でレンズ/プリズムを生成してもらう方法がメジャーでしょうか\n\n\n`OverloadedLabels` に抵抗がなければ generic-lens が便利(マクロではなく定義順が制約されることがないので)ですが、generic-lens のレンズを複数合成すると場合によっては多相性が邪魔をして上手く推論してくれない場合もあります。用途に応じて使い分ける形かなと" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C5666B6BB/105/1712532865.503449.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1712532865.503449", 4 | "text": "ライブラリ作成者が、次に出すバージョンのAPIが、前のバージョンのAPIすべてを提供しているか検査する方法はありますか?\n意図的な欠落が発生する場合はメジャーバージョンアップしないといけないので、意図しない漏れがないか検査したいのです。", 5 | "type": "message", 6 | "user": "U56MBRKR9" 7 | }, 8 | { 9 | "ts": "1712985801.578139", 10 | "text": "ドキュメントが見当たらなくて自信ないんですが、 のcabal-diffとか要件に近かったりしませんかね?それともこれもリリース済みのパッケージ向けかな…?", 11 | "type": "message", 12 | "user": "U4LGTMTMK" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C5666B6BB/105/1715258221.498639.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1715258221.498639", 4 | "text": "Core to Hsあるいは、Core to sourceする関数ってありますか? GHC APIの中に見つからなかったのですが\n\n今私は、Coreの型からCoreExprを計算する を書いていて、出力には表層構文で書かれた文字列を渡す必要があるのですが、単純にCoreExprをpprしてしまうと、Haskellの構文ではなくなってしまいます。\nそれなので、CoreをHsに戻すまで行かなくても、パースに通るようなテキストに変換したいです。", 5 | "type": "message", 6 | "user": "U02CE9YGEAU" 7 | }, 8 | { 9 | "ts": "1715333242.761969", 10 | "text": "なさそうなら、自前で実装するか", 11 | "type": "message", 12 | "user": "U02CE9YGEAU" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C5666B6BB/106/1717642646.503059.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1717642646.503059", 4 | "text": "こんにちは。\nYesodアプリをketerでデプロイしたいのですが、keterの使い方はよくわからずうまく動きません。\nteratailで質問を投げているのですが回答が付きませんので、お分かりでしたらご教示頂けないでしょうか。\n\n\nよろしくお願いします。", 5 | "type": "message", 6 | "user": "UFPRHDT8X" 7 | }, 8 | { 9 | "ts": "1717643943.772459", 10 | "text": "teratailの方で回答しました。", 11 | "type": "message", 12 | "user": "U57CUMWQ6" 13 | }, 14 | { 15 | "ts": "1717646798.112379", 16 | "text": "回答ありがとうございます。", 17 | "type": "message", 18 | "user": "UFPRHDT8X" 19 | }, 20 | { 21 | "ts": "1717649066.941309", 22 | "text": "できました!ありがとうございます!!", 23 | "type": "message", 24 | "user": "UFPRHDT8X" 25 | } 26 | ] -------------------------------------------------------------------------------- /docs/json/C5666B6BB/106/1729153166.017339.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1729153166.017339", 4 | "text": "今って doctest を実行するやり方のオススメって何でしょう\ncabal-doctest でハマってまして", 5 | "type": "message", 6 | "user": "U4L0B71L1" 7 | }, 8 | { 9 | "ts": "1730469779.184589", 10 | "text": "私も最近cabal-doctestでハマった末に `cabal repl --with-compiler=doctest --repl-option='-w'`に移行しました。\n(ちなみに私がハマったのはcabal-doctestがbuild-type: Customを要求するせいでHLSの動作が怪しくなったというものです)", 11 | "type": "message", 12 | "user": "ULMGVGLP3" 13 | }, 14 | { 15 | "ts": "1730469889.045659", 16 | "text": "nix(というかflake-partsのdevshell?)を使っている場合は--package-dbオプションも渡してあげる必要がありました", 17 | "type": "message", 18 | "user": "ULMGVGLP3" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/C5666B6BB/106/1736686167.511779.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1736686167.511779", 4 | "text": "みなさんはタスクランナーなど使われていますか? よく長めのコマンドを打つのですが、プロジェクト毎にコマンド集を持てれば便利だと思いました。\n例: `cabal repl --with-ghc=doctest --repl-options='-w -Wdefault'`", 5 | "type": "message", 6 | "user": "U03H9PH8FRP" 7 | }, 8 | { 9 | "ts": "1736745310.615979", 10 | "text": "とりあえず `make` にしますね。", 11 | "type": "message", 12 | "user": "U4LGTMTMK" 13 | }, 14 | { 15 | "ts": "1736750598.877359", 16 | "text": "~makes sense!~ ありがとうございます!", 17 | "type": "message", 18 | "user": "U03H9PH8FRP" 19 | }, 20 | { 21 | "ts": "1736829317.190339", 22 | "text": "scriptディレクトリ作って適当にシェルスクリプトを書いています", 23 | "type": "message", 24 | "user": "U57CUMWQ6" 25 | }, 26 | { 27 | "ts": "1736849574.328469", 28 | "text": "空気感が知れて参考になります :memo: ", 29 | "type": "message", 30 | "user": "U03H9PH8FRP" 31 | } 32 | ] -------------------------------------------------------------------------------- /docs/json/C5666B6BB/95/1612965162.010500.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1612965162.010500", 4 | "text": "shake256のハッシュを無限リストとして返してくれるようなライブラリってありますか?\n必要な長さがハッシュの内容に依存するような計算をしたいです", 5 | "user": "U015L5JEP8D", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1613002824.010700", 10 | "text": "結局必要に応じて\"入力\"++\"カウンター\"の固定長のハッシュを計算させれば良いという結論に至りました。", 11 | "user": "U015L5JEP8D", 12 | "type": "message" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C5666B6BB/96/1615609238.006700.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1615609238.006700", 4 | "text": "質問はこちらの方が良いでしょうかね?", 5 | "user": "U01R1UNMVT5", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1615609324.008200", 10 | "text": "もくもく会そのものに関する質問でなければここの方がベターですね。", 11 | "user": "U4LGTMTMK", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1615609374.008400", 16 | "text": "ありがとうございます。\n質問をまとめたいので、少しお時間いただけないでしょうか?", 17 | "user": "U01R1UNMVT5", 18 | "type": "message" 19 | }, 20 | { 21 | "ts": "1615609475.009900", 22 | "text": "ああ、もちろん大丈夫です :sweat_drops:\nもし文章にするのが大変だったら Discord のボイスチャットもどうぞ。ちょっと私はこれから食事なのですぐには出られませんが...", 23 | "user": "U4LGTMTMK", 24 | "type": "message" 25 | }, 26 | { 27 | "ts": "1615609617.010200", 28 | "text": "ありがとうございます。ええと、話せるほど疑問点がキレイに纏まっていないので、一旦文章にしながら疑問点を整理したいと思います。", 29 | "user": "U01R1UNMVT5", 30 | "type": "message" 31 | } 32 | ] -------------------------------------------------------------------------------- /docs/json/C5666B6BB/96/1615610091.015600.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1615610091.015600", 4 | "text": "しかもHaskellでデータを保持するとはどういうことなのか(参照等価なので)もよく分かっていないです。", 5 | "user": "U01R1UNMVT5", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1615617874.021500", 10 | "text": "autotakerさんが触れていたIOモナドを利用した、 `IORef` や `MVar` 、 `TVar` など、状態を保持する用の型を使います。", 11 | "user": "U4LGTMTMK", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1615620035.021700", 16 | "text": "ありがとうございます。\nIORefなどを調べていくうちに、Stateモナドで表せるのではないかという結論に達しました。まだ完全に理解したわけではないので、もう少し考察してみたいと思います。", 17 | "user": "U01R1UNMVT5", 18 | "type": "message" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/C5666B6BB/96/1615610619.017400.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1615610619.017400", 4 | "text": "ちなみにこのコードは、形式検証をするために定理証明支援系Coqと呼ばれるもので記述したコードをHaskellのコードに変換したものになっています。", 5 | "user": "U01R1UNMVT5", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1615613767.020700", 10 | "text": "やりたい事はウェブアプリの形式検証ですか?", 11 | "user": "UDUBKLQMD", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1615613863.021100", 16 | "text": "はい。webアプリの勉強も兼ねて、形式検証もやってみようという感じです。", 17 | "user": "U01R1UNMVT5", 18 | "type": "message" 19 | }, 20 | { 21 | "ts": "1615614317.021300", 22 | "text": "Architecture型を定義したのは、「webアプリにおける形式検証とは何か」を定義するための「webアプリとは何か」を表す型が必要だったためです。\nいろいろ混乱を招いてしまい、申し訳ありません。", 23 | "user": "U01R1UNMVT5", 24 | "type": "message" 25 | } 26 | ] -------------------------------------------------------------------------------- /docs/json/C5666B6BB/96/1615612695.020100.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1615612695.020100", 4 | "text": "理想としては、Architecture型の引数をもらって、それに応じてデータベースのやりとりとJSONの入出力を行ってくれる関数を定義したい感じです。\n\nデータベースから's型の変数を作り、入力のJSONを'i型に変換し、updateを施した後、返り値の's型のデータをデータベースに保存し、'o型の返り値をJSONに変換して出力。", 5 | "user": "U01R1UNMVT5", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1615613260.020300", 10 | "text": "そのやり方だとデータベース全体をロードする必要があるとおもいます。\n一般的なデータベース(mysqlとか)とやりとりする場合はIOモナドを使います。", 11 | "user": "UDUBKLQMD", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1615613384.020500", 16 | "text": "IO monadは `s -> (a, s)` 型の関数だと思えば良いので update相当のことができます", 17 | "user": "UDUBKLQMD", 18 | "type": "message" 19 | }, 20 | { 21 | "ts": "1615613799.020900", 22 | "text": "ありがとうございます。s->(a,s)型があればうまくいきそうですね。少し調べてみます。", 23 | "user": "U01R1UNMVT5", 24 | "type": "message" 25 | } 26 | ] -------------------------------------------------------------------------------- /docs/json/C5666B6BB/96/1618734832.054000.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1618734832.054000", 4 | "text": "ulidというパッケージについてrandom-1.2以降への対応を試みています\n(背景: )\nどなたか、できればCPP使って1.2より前のバージョンと1.2以後両方の対応をやったことがあれば修正例として参考にさせていただけないでしょうか?", 5 | "user": "U4LGTMTMK", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1618740065.054300", 10 | "text": "テストまでrandom-1.2未満に依存していたり、そもそもRandomのインスタンス定義が `unsafePerformIO` なんぞ使ったおかしなものであったり、いろいろ直したい欲求に駆られたけど妥協しました... :disappointed_relieved:\n", 11 | "user": "U4LGTMTMK", 12 | "type": "message" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C5666B6BB/96/1619747032.077800.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1619747032.077800", 4 | "text": "スニペットに張ったようなデータ構造を提供しているライブラリを探しています。\n自分で書きたくないのは、drawTreeみたいな関数を再発明したくないためです。\nない場合自前で書きます…", 5 | "user": "U57CUMWQ6", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1619751389.078200", 10 | "text": "多分ないです。やるとしたらGenericsとかuniplateとか使って頑張ってボイラープレートを減らすしかないんじゃないっすかね... :disappointed:", 11 | "user": "U4LGTMTMK", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1619751847.078400", 16 | "text": "なるほど…やっていきます…", 17 | "user": "U57CUMWQ6", 18 | "type": "message" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/C5666B6BB/97/1621162561.092000.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1621162561.092000", 4 | "text": "はじめまして。\n および を読んでいるのですが、文書の内容に(些細な)問題を見つけたり、ビルドスクリプトに問題が見つかった場合は、どこに提案すればよいのでしょうか?", 5 | "user": "U021XMH7NDT", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1621251636.092600", 10 | "text": "残念ながらここに分かる人がいないとすると、Haskell Cafe や Discourse など、英語圏のフォーラムに尋ねるしかなさそうですね... :disappointed:\n英語を書くときの相談用チャンネルとして <#CR4U9PBLL|english-help> があるので、もし英語でissueを書くのが心配なら相談してみてください。", 11 | "user": "U4LGTMTMK", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1621258993.092900", 16 | "text": "了解です。今度聞いてみます。ありがとうございます!", 17 | "user": "U021XMH7NDT", 18 | "type": "message" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/C5666B6BB/97/1621326587.003000.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1621326587.003000", 4 | "text": "お疲れ様です。\nlensのライブラリがいくつかあります。(generic-lensはいいなと思いつつ)\nどれも同じ定義をつかっているようですが、\nパワフルな機能は必要なくてLens, Prism, Traversal, Isoとか基本的なものが含まれていればよいケースでは\nどれを使うのがおすすめでしょうか。\nそろそろbaseのライブラリに入ってほしいですね。\n逆につかわないほうがいいものはありますか?\nとりあえず、これを使うべきですかね。\n", 5 | "user": "U74KTAG0N", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1621327229.003700", 10 | "text": "TraversalやIsoまでは使えなかった気がしますがmicrolensを昔からよく使います。\nちなみに、generic-lensはlensそのものを提供するだけでlensのコンビネーターは提供してくれなかったはずです。だからlensやmicrolensなどと組み合わせる必要があります。", 11 | "user": "U4LGTMTMK", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1621327809.003900", 16 | "text": "ありがとうございます。microlensに一通り入ってそうですね。", 17 | "user": "U74KTAG0N", 18 | "type": "message" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/C5666B6BB/97/1622361142.005600.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1622361142.005600", 4 | "text": "非標準ライブラリーを import すると VS Code がエラーと言う 例えば `Could not find module 'Data.Vector'\\nPerhaps you meant Data.Functor (from base-4.14.1.0)`  実際はビルドも実行も問題がないコードですが VS Code の Extension に HSLに入れて以来この問題が発生しています 環境は VS Code + WSL2: Ubuntu-20.0.4 Remote + Extension: Haskell 1.4.0 (Haskell Language Server), stack version 2.5.1, ghc version 8.10.4 です どなたか解決策をお持ちですか", 5 | "user": "U584T7GAH", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1623044752.018100", 10 | "text": "だいぶ時間が経っていてoutdatedかもわかりませんが、 `vector` は `package.yaml` や `<packagename>.cabal` に書いて導入したか、 `stack install` や `cabal install` で導入したかのどちらでしょうか?", 11 | "user": "UL1HFJATE", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1623044929.019300", 16 | "text": "HLS って global 環境に `stack install` で導入したパッケージを見落とす印象があるので…", 17 | "user": "UL1HFJATE", 18 | "type": "message" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/C5666B6BB/97/1623515683.032900.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1623515683.032900", 4 | "text": "empty と non-emptyを型で分離した上で、という話じゃなくなってしまうのですが。\n\nGADT による制限で `Nil` は `Branch` にも `Tip` にも持たれないので、空の `Patricia` を表現するときだけに使われると思っていいですよね。もしそうなら、`Patricia` が必ず1つ以上の要素をもつ (`Semigroup` みたいに) としてしまえば `Nil` がなくなって `inhabited` を区別しなくてよくなり、existential type もいらなくなると思ったのですが、そういうのってありなんでしょうか。empty がなくなると不便ですかね。", 5 | "user": "U578W9676", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1623516355.035200", 10 | "text": "`Data.Vector.Unboxed.Vector Word` を変換して使うんで、あった方がいいっちゃいいんですよね…。", 11 | "user": "UL1HFJATE", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1623516949.040400", 16 | "text": "そうですよね…\nあとスレッドを使うルールを忘れていました :bow:", 17 | "user": "U578W9676", 18 | "type": "message" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/C5666B6BB/97/1626273407.002900.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1626273407.002900", 4 | "text": "pattern synonyms と view patterns を使ったときにパターンに失敗するというの明示できましたっけ?", 5 | "user": "U4L0B71L1", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1626273423.003000", 10 | "text": "途中送信してしまった", 11 | "user": "U4L0B71L1", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1626274255.003200", 16 | "text": "あれ?できたな…… ", 17 | "user": "U4L0B71L1", 18 | "type": "message" 19 | }, 20 | { 21 | "ts": "1626278865.003500", 22 | "text": "view pattern の関数が部分関数だったときの挙動がよく分かってないっぽい…… ", 23 | "user": "U4L0B71L1", 24 | "type": "message" 25 | } 26 | ] -------------------------------------------------------------------------------- /docs/json/C5666B6BB/98/1632012847.029400.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1632012847.029400", 4 | "text": "モナドについての質問です。(既出だったらすみません。)\n以下の型を持つ関数は一般に存在しますかね?", 5 | "user": "U01R1UNMVT5", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1632013856.029500", 10 | "text": "Monadじゃないけどtraverseっぽい", 11 | "user": "UMKGDJ2RZ", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1632014927.029700", 16 | "text": "ありがとうございます。やりたいのは多分それでした。\nなるほど、traverseというのですね。\n\nちなみに、自分でも考えてみましたが、Monadの場合は存在しないことがわかりました。\n\nmとnがMonadのとき、\nforall a b, (a -> m b) -> n a -> m (n a)\nforall a, n (m a) -> m (n a)\nが同値になって、明らかに後者は成り立たないので。", 17 | "user": "U01R1UNMVT5", 18 | "type": "message" 19 | }, 20 | { 21 | "ts": "1632016173.030000", 22 | "text": "まさにtraverseの公理そのものでしたね...\n返答いただき、ありがとうございました。", 23 | "user": "U01R1UNMVT5", 24 | "type": "message" 25 | } 26 | ] -------------------------------------------------------------------------------- /docs/json/C5666B6BB/99/1636764294.036400.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1636764294.036400", 4 | "text": "stackのpackage.yamlのexecutables欄に指定することで異なるオプションを持つ複数のバイナリを生成することができますが、そのうちのいくつかをデフォルトでは生成されないようにすることってできますか", 5 | "user": "U015L5JEP8D", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1636802743.037300", 10 | "text": "\ncabalのbuildableのようなものですか?", 11 | "user": "U74KTAG0N", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1636843028.037500", 16 | "text": "package.yaml側でbuildableを設定したらできました!ありがとうございます", 17 | "user": "U015L5JEP8D", 18 | "type": "message" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/C5666B6BB/99/1638331843.054000.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "pattern synonyms は便利なんですが、以下の例では Show インスタンスが冗長に感じます。自動生成する方法はありませんか?\n\n```newtype Error = Error Int\npattern InternalError = Error 1\ninstance Show Error where\n show (Error 1) = \"InternalError\"```", 4 | "type": "message", 5 | "ts": "1638331843.054000", 6 | "user": "U56MBRKR9" 7 | }, 8 | { 9 | "text": "ちょっと聞いたことがないです。Template Haskellでも使ってライブラリー作るしかないんじゃないっすかね... :disappointed:", 10 | "type": "message", 11 | "ts": "1638354236.054300", 12 | "user": "U4LGTMTMK" 13 | }, 14 | { 15 | "text": "パターンシノニムは、シノニムというだけあり、Typableのように概念から値を引き出すことができないので、Template Haskellなどを使う必要があると思います", 16 | "type": "message", 17 | "ts": "1638355355.055400", 18 | "user": "U4KUNQF9N" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/C5666B6BB/99/1642759812.057700.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "cabal や stack でプロジェクト作ってて今このライブラリーのどのバージョンを使ってるんだろう(どのバージョンに依存解決されてるんだろう)?ってどうやったら知れるんでしょうか?", 4 | "type": "message", 5 | "ts": "1642759812.057700", 6 | "user": "U4L0B71L1" 7 | }, 8 | { 9 | "text": "stackだと `stack exec ghc-pkg list` ですね。cabalも同じ要領でいけるんじゃないかな!", 10 | "type": "message", 11 | "ts": "1642759956.058400", 12 | "user": "U4LGTMTMK" 13 | }, 14 | { 15 | "text": "cabalなら もおススメです", 16 | "type": "message", 17 | "ts": "1642860179.059800", 18 | "user": "U4M9NJ7QE" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/C5666B6BB/99/1642759949.058200.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "ghc-pkg list?(stack や cabal v2-buildを使っている限り複数バージョンがリストされることはないはず)", 4 | "type": "message", 5 | "ts": "1642759949.058200", 6 | "user": "UK0MXUCAV" 7 | }, 8 | { 9 | "text": "ありがとうございます!", 10 | "type": "message", 11 | "ts": "1642762425.059100", 12 | "user": "U4L0B71L1" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/C7Y71415W/11/1636878256.005900.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1636878256.005900", 4 | "text": "「ziplist monad proof」でググったら Ziplist アプリカティブがモナドにならないことの証明と思われる Coqコードを見つけた。\n (こちらは日本の人のだ)\n", 5 | "user": "U57CGDBMG", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1636879118.006200", 10 | "text": "このツイートでやってたらしい。 ", 11 | "user": "U57CGDBMG", 12 | "type": "message" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CAXQ09PN2/26/1620399619.019300.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1620399619.019300", 4 | "text": "WIP", 5 | "user": "U4L0B71L1", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1620524821.019900", 10 | "text": "かっこいい!!", 11 | "user": "U59TQ3MJ9", 12 | "type": "message" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CAXQ09PN2/26/1621382473.011600.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1621382473.011600", 4 | "text": "ともあれ唐草模様もあるっぽい ", 5 | "user": "U4LGTMTMK", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1621419468.012100", 10 | "text": "おっと思ったが繰り返しになってるものはあんまりなさそうか", 11 | "user": "U4L0B71L1", 12 | "type": "message" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CAXQ09PN2/26/1622348400.017900.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1622348400.017900", 4 | "text": "第6回会議 ", 5 | "user": "U4L0B71L1", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1622809463.024300", 10 | "text": "申しわけありません。6/6に急かつ避けられない予定が入ってしまったので、欠席いたします。\n(もし来れそうなら来ますが多分無理になりそうなので……)", 11 | "user": "U4M5UPE4F", 12 | "type": "message" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CAXQ09PN2/26/1622357705.020700.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1622357705.020700", 4 | "text": "<@U4L0B71L1> <@U4M5UPE4F> connpassのグループの管理者権限を加えておきました。「承認待ち」になっているのでご確認を! hask(_ _)eller\nと、招待してから気づきましたがよく考えたらconnpassのイベントの編集権限とグループの権限はまた別物だったような気もしてきました。まぁそれはその時で!", 5 | "user": "U4LGTMTMK", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1622359063.020800", 10 | "text": "承認しました。ありがとうございます", 11 | "user": "U4M5UPE4F", 12 | "type": "message" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CAXQ09PN2/27/1623503323.031300.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1623503323.031300", 4 | "text": "<@U4LGTMTMK> <@U4KPPQW7K> <@U59TQ3MJ9> <@U4M5UPE4F> 明日は会議なしで!", 5 | "user": "U4L0B71L1", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1623503490.031400", 10 | "text": "おっ、みんなで一斉にレビューしよう会かな、と思ってたけどそうしますか!\n\nところで件のPull requestは最新のorigin/masterからrebaseし直してくれるとちゃんとプレビューできるのでどうか :pray:\n要するにこの :point_down: のコミットが適用されてないとプレビューができない状態なので!\n", 11 | "user": "U4LGTMTMK", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1623508174.031700", 16 | "text": "あっ、ごめん、と思ったらもうやってたのか :man-bowing:", 17 | "user": "U4LGTMTMK", 18 | "type": "message" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/CAXQ09PN2/27/1625969225.033400.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1625969225.033400", 4 | "text": "<@U59TQ3MJ9> 久しぶりのミーティングですよ", 5 | "user": "U4L0B71L1", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1625976232.033500", 10 | "text": "ごめんなさい。時間勘違いしてました。。", 11 | "user": "U59TQ3MJ9", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1625976696.033700", 16 | "text": "議事録確認しました:man-bowing:", 17 | "user": "U59TQ3MJ9", 18 | "type": "message" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/CAXQ09PN2/27/1626066744.034500.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1626066744.034500", 4 | "text": "Connpass の方にも投票のメッセージ(メール)送りましょうか", 5 | "user": "U4L0B71L1", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1626080880.035000", 10 | "text": "done", 11 | "user": "U4L0B71L1", 12 | "type": "message" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CAXQ09PN2/27/1630394349.000900.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1630394349.000900", 4 | "text": "<@U4LGTMTMK> <@U4KPPQW7K> <@U59TQ3MJ9> <@U4M5UPE4F> 9/5 の会議の議題何かありますか?", 5 | "user": "U4L0B71L1", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1630394587.001000", 10 | "text": "アンケート案は時期尚早っすかね", 11 | "user": "U4LGTMTMK", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1630463668.001200", 16 | "text": "<@U4LGTMTMK> まだ先でもよさそうね", 17 | "user": "U4L0B71L1", 18 | "type": "message" 19 | }, 20 | { 21 | "ts": "1630463678.001400", 22 | "text": "ですねぇ", 23 | "user": "U4LGTMTMK", 24 | "type": "message" 25 | }, 26 | { 27 | "ts": "1630711079.002000", 28 | "text": "9/5 の会議はなしにしましょう", 29 | "user": "U4L0B71L1", 30 | "type": "message" 31 | } 32 | ] -------------------------------------------------------------------------------- /docs/json/CAXQ09PN2/27/1633084774.004900.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1633084774.004900", 4 | "text": "next議題\n・タイムテーブル調整など相談\n・発表の詳細ページの情報増やす相談", 5 | "user": "U59TQ3MJ9", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1633146118.016200", 10 | "text": "・当日のコミュニケーションについて確認", 11 | "user": "U59TQ3MJ9", 12 | "type": "message" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CAXQ09PN2/27/1633163583.017000.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1633163583.017000", 4 | "text": "<@U59TQ3MJ9> 次回 10月10日(日)11時からで:ok:ですか?", 5 | "user": "U4L0B71L1", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1633169072.017100", 10 | "text": "okです!", 11 | "user": "U59TQ3MJ9", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1633784213.020400", 16 | "text": "<@U4L0B71L1> すみません!明日間違えて11:30から婚活の予定を入れてしまいました… どちらにしてもオンラインなので最初の方は出られるけど:pray::pray::pray:", 17 | "user": "U4LGTMTMK", 18 | "type": "message" 19 | }, 20 | { 21 | "ts": "1633784672.020600", 22 | "text": "<@U4LGTMTMK> お、雑にドキュメント複製したんで議題あったら書いといてくだっさい\n", 23 | "user": "U4L0B71L1", 24 | "type": "message" 25 | } 26 | ] -------------------------------------------------------------------------------- /docs/json/CAXQ09PN2/27/1633525846.020000.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1633525846.020000", 4 | "text": "なお、件のリンクからは動画の視聴はできるもののダウンロードはできない模様。\nというのも、ダウンロード回数を数える箇所はあるにも関わらず、ダウンロードするリンクが見当たらない。「登録したらできるかな?」と思って試みるも、「日本からは使えない」というエラーが :weary:", 5 | "user": "U4LGTMTMK", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1633609659.020100", 10 | "text": "国外は VooV 使えと出ますね", 11 | "user": "U4L0B71L1", 12 | "type": "message" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CAXQ09PN2/27/1634042674.022100.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1634042674.022100", 4 | "text": "オープニングスライドもくもく ", 5 | "user": "U4L0B71L1", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1634046371.022200", 10 | "text": "また明日みなおそう", 11 | "user": "U4L0B71L1", 12 | "type": "message" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CCYF8H43A/2/1622548358.000900.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1622548358.000900", 4 | "text": "Nixを使ったHaskellプロジェクトのテンプレート\n", 5 | "user": "U4LGTMTMK", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1622599752.001200", 10 | "text": "nix flake使い方がわからないですね。\n\nに書いてあることだとよくわからないし、\n\nこちらみてもhaskellでの使い方がわからないですし、\n\nこれをみてようやくhaskellでの使い方がなんとなくわかるような。\nなにかいいチュートリアルがあるといいのですが。", 11 | "user": "U74KTAG0N", 12 | "type": "message" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CCYF8H43A/4.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1737728271.556189", 4 | "text": "<@U57CUMWQ6> has joined the channel", 5 | "type": "message", 6 | "user": "U57CUMWQ6" 7 | }, 8 | { 9 | "ts": "1748466635.109459", 10 | "text": "<@U07UXNUUT7Z> has joined the channel", 11 | "type": "message", 12 | "user": "U07UXNUUT7Z" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CD87P78HF/9.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1668925818.088229", 4 | "text": "", 5 | "type": "message", 6 | "user": "U01VC68BEN4" 7 | }, 8 | { 9 | "ts": "1668925961.813569", 10 | "text": "", 11 | "type": "message", 12 | "user": null 13 | }, 14 | { 15 | "ts": "1708179798.544269", 16 | "text": "<@U06KBK22V6X> has joined the channel", 17 | "type": "message", 18 | "user": "U06KBK22V6X" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/CD87P78HF/9/1668925818.088229.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "", 4 | "type": "message", 5 | "ts": "1668925818.088229", 6 | "user": "U01VC68BEN4" 7 | }, 8 | { 9 | "text": "", 10 | "type": "message", 11 | "ts": "1668925818.242449", 12 | "user": "U01VC68BEN4" 13 | }, 14 | { 15 | "text": "", 16 | "type": "message", 17 | "ts": "1668925961.620849", 18 | "user": "U01VC68BEN4" 19 | }, 20 | { 21 | "text": "", 22 | "type": "message", 23 | "ts": "1668925961.813569", 24 | "user": null 25 | } 26 | ] -------------------------------------------------------------------------------- /docs/json/CL3AXB1AL/6/1675906753.041469.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "type": "message", 4 | "user": "UL1HFJATE", 5 | "ts": "1675906753.041469", 6 | "text": "`parallel` が202001から提案パッケージに含まれたままになっていますが,`--with-rtsopts -threaded` したほうがいいのでしょうか?" 7 | }, 8 | { 9 | "type": "message", 10 | "user": "UL5PAB0F9", 11 | "ts": "1675939537.562779", 12 | "text": "`-threaded` をつけるとシングルスレッド用のコードでパフォーマンスが悪化する可能性があるのと,現在のAtCoderのコンテストでは並列化するメリットはないと思うのでつけなくてもいいかなと思います。" 13 | }, 14 | { 15 | "type": "message", 16 | "user": "UL1HFJATE", 17 | "ts": "1675942207.831469", 18 | "text": "なるほど、ありがとうございます。ではそうしましょう。我々からは想像できない不思議なメリットがあったとしても、最悪 `OPTIONS_GHC` プラグマもありますしね。" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/CL3AXB1AL/6/1679122969.715459.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "type": "message", 4 | "user": "UL1HFJATE", 5 | "ts": "1679122969.715459", 6 | "text": "上で提示した実行方法ですが,cwdが `/judge` で `$HOME` が `/home/runner` なので見直しが要るかもですね……" 7 | }, 8 | { 9 | "type": "message", 10 | "user": "UL1HFJATE", 11 | "ts": "1679207812.415839", 12 | "text": "この件で上のgist を修正しました" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CL3AXB1AL/7/1680882594.428769.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "type": "message", 4 | "user": "UL5PAB0F9", 5 | "ts": "1680882594.428769", 6 | "text": "strict-tuple, strict-containersはhackageでみるとあんまり使われてないのでちょっと不安があります。\n実際に使っていくのであれば入れてもいいかなという感じです" 7 | }, 8 | { 9 | "type": "message", 10 | "user": "UL1HFJATE", 11 | "ts": "1680909470.186119", 12 | "text": "あー…やめときましょうか.`strict-tuple` はモジュール名がややこしいし,`strict-containers` は `containers` からの autogenで作られてるパッケージなのに最終アップロードが `containers` より古いです." 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CL3AXB1AL/7/1680911991.248749.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "type": "message", 4 | "user": "UL1HFJATE", 5 | "ts": "1680911991.248749", 6 | "text": "theseのdocを読んでたんですけど、semialignとsemialign-indexedまで入れないと片手落ちだったりしますかね、これ……? (取り敢えず追加提案の期限は過ぎてるので、明示的な賛同が出ない限りは提案はしません)" 7 | }, 8 | { 9 | "type": "message", 10 | "user": "UL1HFJATE", 11 | "ts": "1680912430.003739", 12 | "text": "まあ strict のThese にsemialign相当の機能って突っ込んでないんだから、そこまで関連パッケージが追加されていないことに神経質にならなくても、不整合なパッケージ追加にはならなさそうですかね。" 13 | }, 14 | { 15 | "type": "message", 16 | "user": "UL5PAB0F9", 17 | "ts": "1680913690.157669", 18 | "text": "semialign-indexedはdeprecatedなので,いれるならsemialignだけですかね\n明らかに便利だと思うんで,入れてしまっていいと思います" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/CL3AXB1AL/7/1680914067.289309.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "type": "message", 4 | "user": "UL5PAB0F9", 5 | "ts": "1680914067.289309", 6 | "text": "圏論系ライブラリは `free` を入れ忘れてました。transitive dependencyとしては入ってはいるものです" 7 | }, 8 | { 9 | "type": "message", 10 | "user": "UL1HFJATE", 11 | "ts": "1680915937.946749", 12 | "text": "圏論系で便利であるものとして際たるものなので他の圏論系入れるならこいつ入れない手はない気がしますね" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CL3AXB1AL/7/1680922590.107489.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "type": "message", 4 | "user": "UL1HFJATE", 5 | "ts": "1680922590.107489", 6 | "text": "`witherable` を入れたいのを今思い出したけど,もうすぐテスト開始時間だし,transitive dependency にも入ってないし,やめといた方がいいかな…" 7 | }, 8 | { 9 | "type": "message", 10 | "user": "UL5PAB0F9", 11 | "ts": "1680923342.090459", 12 | "text": "ユースケースとしてはBFSで使えたりしますね。\n幾何ライブラリのhgeometryの例\n" 13 | }, 14 | { 15 | "type": "message", 16 | "user": "UL5PAB0F9", 17 | "ts": "1680923389.512819", 18 | "text": "タイミング的には次回提案に回した方がいいかなとは思います" 19 | }, 20 | { 21 | "type": "message", 22 | "user": "UL1HFJATE", 23 | "ts": "1680923417.771529", 24 | "text": "そうですね.やめときます." 25 | } 26 | ] -------------------------------------------------------------------------------- /docs/json/CL3AXB1AL/7/1680941450.522769.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "type": "message", 4 | "user": "UL1HFJATE", 5 | "ts": "1680941450.522769", 6 | "text": "各パッケージに丁寧に lower bound をつけているので, `--upgrade-dependencies` をやっぱり外すことにしました. `compact` はもちろん不可能ですが, ~`ghc-compact` は回復できました.~" 7 | }, 8 | { 9 | "type": "message", 10 | "user": "UL1HFJATE", 11 | "ts": "1680963330.176849", 12 | "text": "`ghc-compact` の回復はできていませんでした.これも同様に `bytestring` との conflict です.諦めます." 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CL3AXB1AL/8/1682470671.109409.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "type": "message", 4 | "user": "UL1HFJATE", 5 | "ts": "1682470671.109409", 6 | "text": "ありそうなのは, `cabal v2-build` が これらのWarning を出さないように見えるので,\n\n```cabal v2-build && cabal v2-install --verbose=0 --installdir=.. --install-method=copy --offline```\nでやっちゃう,というのは手としてあるかもしれません." 7 | }, 8 | { 9 | "type": "message", 10 | "user": "UL1HFJATE", 11 | "ts": "1682470953.091509", 12 | "text": "ただ,手元環境とサーバ環境で表示される警告が違うので,あんまり確信を持って修正できないのが正直なところなんですよね…." 13 | }, 14 | { 15 | "type": "message", 16 | "user": "UL1HFJATE", 17 | "ts": "1682473545.001119", 18 | "text": "あるいは,さっきのコマンドだと2回コンパイルしてしまうみたいなので,\n\n```cabal v2-build && cabal v2-exec -- bash -c 'cp $(which main) ../main'```\nでもいいかもしれないですね." 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/CL3AXB1AL/8/1682510145.007589.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "type": "message", 4 | "user": "UL1HFJATE", 5 | "ts": "1682510145.007589", 6 | "text": "意見募集: とくに反対がなければ,コンパイルコマンドを\n\n```cd /judge/submission\nsource ~/.ghcup/env\ncabal v2-build --offline && cabal v2-exec -- bash -c 'cp $(which main) ../'```\nに変更しようと思いますが,どうでしょう?" 7 | }, 8 | { 9 | "type": "message", 10 | "user": "UL5PAB0F9", 11 | "ts": "1682521830.460049", 12 | "text": "`v2-exec which` よりかは `cabal list-bin` を使うほうがよさそうです\n" 13 | }, 14 | { 15 | "type": "message", 16 | "user": "UL1HFJATE", 17 | "ts": "1682595802.688999", 18 | "text": "なるほど.ご指摘を受けて修正するなら,\n\n```cd /judge/submission\nsource ~/.ghcup/env\ncabal v2-build --offline && cp $(cabal list-bin main) ../```\nでしょうか." 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/CL3AXB1AL/8/1682600591.717579.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "type": "message", 4 | "user": "UL1HFJATE", 5 | "ts": "1682600591.717579", 6 | "text": "では,改善もされたことですし,明日まで待って特に反対がなければ\n\n```cd /judge/submission\nsource ~/.ghcup/env\ncabal v2-build --offline && cp $(cabal list-bin main) ../```\nに提案シートを書き換えた上で feedback に追加freezeの要望を出します." 7 | }, 8 | { 9 | "type": "message", 10 | "user": "UL1HFJATE", 11 | "ts": "1682806606.394059", 12 | "text": "報告を忘れていましたが,昨日未明(おとといの深夜)に記入してきました.\n• \n• " 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CL3AXB1AL/8/1685765893.274489.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "type": "message", 4 | "user": "UL5PAB0F9", 5 | "ts": "1685765893.274489", 6 | "text": "Language Test Contestが4/11版に更新されたようです\n" 7 | }, 8 | { 9 | "type": "message", 10 | "user": "UL1HFJATE", 11 | "ts": "1686447567.947069", 12 | "text": "遅くなりましたが, のインポートテストコードがCompile を通ることを確認しました." 13 | }, 14 | { 15 | "type": "message", 16 | "user": "UL1HFJATE", 17 | "ts": "1686448242.037629", 18 | "text": "環境構築用の `cabal.project.freeze` ファイルをコードテスト:\n\n```main :: IO ()\nmain = putStr =<< readFile \"/judge/submission/cabal.project.freeze\"```\nで取得しました!\n\n" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/CL3AXB1AL/8/1686921303.827259.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "type": "message", 4 | "user": "UL1HFJATE", 5 | "ts": "1686921303.827259", 6 | "text": "事態の収拾がつかなくなりそうでAtCoder社員さまの労力が心配ですが,こんな確認事項がSpreadsheetに追加されました:\n\n\n> 時間が開いてしまったため言語およびライブラリのアップデートを許可することにします\n> ただし以下のような変更は依然として却下です\n> - これまでに申請済みのライセンスが変わる\n> - 新規言語、新規ライブラリの追加\n> 参考: \nこれに乗じて GHC 9.4.5 をつっこめますね! とか不安だったので地味にホッとしています….異論がなければ,仮想環境ビルドを 9.4.5 に bump して試した上で 書き換えを行います." 7 | }, 8 | { 9 | "type": "message", 10 | "user": "UL1HFJATE", 11 | "ts": "1686921436.399909", 12 | "text": "なお,同時に次回の Freeze が 6/19 で確定しました!" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CL3AXB1AL/8/1686957789.585189.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "type": "message", 4 | "user": "UL1HFJATE", 5 | "ts": "1686957789.585189", 6 | "text": "バージョンアップ作業中です.\n• `unix-2.7.3` (installed with GHC) の `unix-2.8.1.1` へのアップデートを試みましたが,`unix-2.8.1.1` は `filepath >= 1.4.100.0` を要求し,これが既存のバージョン指定 `filepath < 1.4.100` に矛盾したため,とりあえず `unix ==2.7.3` で固定しておきます.異論があればお願いします.なお,`filepath <1.4.100` を外してもインストールは可能と思われます.`filepath <1.4.100` のバージョン指定の由来は次のとおりです:4/11 freeze時に, `hpc` (the version bundled with GHC-9.4.4 + all versions on Hackage) と `filepath >=1.4.100` がdependency上かコード上(dependency rangeで許可されているがコンパイルエラーが出るという意味)で非互換であるため, `hpc` を外し `filepath` を installed with GHC のバージョンに固定しておくという経過措置をとったものです." 7 | }, 8 | { 9 | "type": "message", 10 | "user": "UL1HFJATE", 11 | "ts": "1686958010.714919", 12 | "text": "なお, `hpc` は *GHC-bundled version がHackage上の同バージョン番号のバージョンと一致しない*パッケージなので注意してください." 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CR2TETE5R/14/1611579200.002500.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1611579200.002500", 4 | "text": "まだ基本文法で感動してるような段階の初心者なんですが、どうしても経験者でないとわからないことをお聞きしたいです。GitHubでチラチラとHaskellで書かれたリポジトリを見てみたら、なんとなく全体的に確かに他の言語のものより短くプログラムが書かれている気がします。やはり、Haskellを使用すると他の一般的な言語よりも短いコード量になる、というのはあるのでしょうか?", 5 | "user": "U01K57PCEH2", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1611580274.002600", 10 | "text": "確かに比較的短く書くための機能はたくさんありますね。まぁ、そのあたりの機能を使いすぎると短すぎて逆に分かりづらい、みたいな状況に陥りがちなんで一概にいいとは言えませんが... :sweat_smile:", 11 | "user": "U4LGTMTMK", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1611580689.002800", 16 | "text": "なるほど。初心者の段階である程度学んでいった先にどんな感じの世界が待ってるのかがわかってたほうがやりやすいので、助かります!", 17 | "user": "U01K57PCEH2", 18 | "type": "message" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/CR2TETE5R/14/1613583594.024800.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1613583594.024800", 4 | "text": "現在VSCode+stackで開発をしています。個人的な好みでVimも使いたいのですが、ghcupはHLSのインストールもやってくれると聞き、移行を考えています。stackとghcupを同一の環境にインストールするとき不都合はあるでしょうか", 5 | "user": "U015L5JEP8D", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1613606380.025000", 10 | "text": "原則stackは独自の領域にGHCなどをインストールするので、干渉するなど大きな問題はないと思います。\n強いて言えば、独自の領域にインストールする関係上二重にインストールすることになるから結構容量を食うという点でしょうか。stackに `--system-ghc` オプションを追加すれば、 `PATH` からGHCを探すようになるので多少緩和されるはずです。(stackのconfig.yamlでも `--system-ghc` 相当の設定があった気がしますが忘れました。悪しからず)", 11 | "user": "U4LGTMTMK", 12 | "type": "message" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CR2TETE5R/14/1613647033.026500.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1613647033.026500", 4 | "text": "質問なのですが、take 10 [1..] ++ (take 8 [10,9..]) を()を使わず $ で書くようなやり方はあるのでしょうか\nもしあるなら教えていただければ幸いです", 5 | "user": "U01NH93GM27", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1613647539.026600", 10 | "text": "少なくとも、今回の例はかっこ要らなそう\n```Prelude> take 10 [1..] ++ (take 8 [10,9..]) \n[1,2,3,4,5,6,7,8,9,10,10,9,8,7,6,5,4,3]\nPrelude> take 10 [1..] ++ take 8 [10,9..]\n[1,2,3,4,5,6,7,8,9,10,10,9,8,7,6,5,4,3]```", 11 | "user": "U56L7EVNY", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1613649938.027500", 16 | "text": "ほんとですね!何か勘違いをしていました:pray:\nありがとうございます", 17 | "user": "U01NH93GM27", 18 | "type": "message" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/CR2TETE5R/14/1614772155.014500.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1614772155.014500", 4 | "text": "「すごいH本」の72〜73ページでわからないことがあります.\n```ghci> let listOfFans = map (*) [0..]\nghci> (listOfFans !! 4) 5\n20```\nと書いてあり,実行すると実際に20が出力されるのですが,`[0..]`で得られるリストは`[0, 1, 2, 3, 4, 5, 6, ...]`ですよね?`(listOfFans !! 4)`ではリスト4番目の要素の3が戻り値になると思ったのですが,なぜ4なのでしょうか.\n初歩的な質問ですが教えていただけると幸いです.", 5 | "user": "U01HX0A6NT1", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1614772632.020800", 10 | "text": "`[0..] !! 4` を実行してみましょう。すると、 `4` という結果になります。他の数として `[0..] !! 1` を実行すると `1` になります。\nリストの最初の要素を取り出すには `0` を使わなければなりません。その次の要素を取り出すには `1` を使わなければなりません。その次も……というようになります。", 11 | "user": "U5LEE6C1J", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1614773362.021100", 16 | "text": "返信ありがとうございます.\n`!!` を使ってn個目の要素を取得するとき,nは0から数え始めるってことですかね.確かにPythonなどで`a = [1, 2, 3, 4, 5]` のリストから1を取りたいときは`a[0]` だから,それと同じ考えですね.\nありがとうございました.", 17 | "user": "U01HX0A6NT1", 18 | "type": "message" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/CR2TETE5R/15/1615368796.005200.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1615368796.005200", 4 | "text": "そういえば <#CA5H65L2J|xmonad> チャンネルを に追加するのを忘れていたので追加しておきます。", 5 | "user": "U4LGTMTMK", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1615383291.005500", 10 | "text": "\nと\n\nのコミットで :kanryo:\nまもなく にも表示されることでしょう。", 11 | "user": "U4LGTMTMK", 12 | "type": "message" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CR2TETE5R/15/1615617416.010400.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1615617416.010400", 4 | "text": "$の記号と.の記号の使い方で、\n\n```a :: PP -> X()\nb :: PP -> PP\nmyPP :: PP\n\n-- 普段は\na myPP\n\n-- bで加工してからaに渡す(その1)\na $ b myPP\n\n-- bで加工してからaに渡す(その2)\na . b $ myPP```\nその1とその2で同じ様になりますか?", 5 | "user": "U01AY66DT7U", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1615617914.010500", 10 | "text": "はい、その1とその2はよく相互に書き換えられるパターンです。", 11 | "user": "U4LGTMTMK", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1615618203.010700", 16 | "text": "ありがとうございます", 17 | "user": "U01AY66DT7U", 18 | "type": "message" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/CR2TETE5R/15/1616146676.007800.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1616146676.007800", 4 | "text": "すみません追加質問です。\nstackのghcを8.10.4にアップデートしたいのですが、スタックでのアップグレードのやり方がわかりません。\n調べたのですがインストールの方法しかなく、アップグレードのやり方が見つかりませんでした。", 5 | "user": "UFMV026NR", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1616148918.018800", 10 | "text": "stackが使うghcのバージョンはstackageのバージョンで決まります。ghc 8.10.4なら、lts-17.6や最新のnightlyが対応しています。なので、アップデートするというよりは、都度必要なstackageのバージョンを設定することになります(対応するghcのインストールはstackにより自動で行われる)\nstackageのバージョンを設定する方法はいろいろありますが、一番簡単なのはコマンドラインで`stack config set resolver lts-17.6`を実行する方法だと思います。", 11 | "user": "U7907NMGF", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1616238488.019600", 16 | "text": "やってみています、ありがとうございます。", 17 | "user": "UFMV026NR", 18 | "type": "message" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/CR2TETE5R/15/1617038731.024400.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1617038731.024400", 4 | "text": "HaskellではなくIdrisを始めようとしているのですが、idringenをインストールしようとする過程でhackage.haskell.orgから502が帰ってきて困っています。これってしばらくすれば解決する問題なのでしょうか?それとも自分の環境に問題があるのでしょうか?", 5 | "user": "U01S9U2ENS3", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1617066159.024500", 10 | "text": "hackageが一時的にダウンしていたそうです。詳しくは <#C4M4TT8JJ|random> チャンネルに投稿された発言を", 11 | "user": "U4LGTMTMK", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1617094703.024700", 16 | "text": "ありがとうございます。見落としていました。", 17 | "user": "U01S9U2ENS3", 18 | "type": "message" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/CR2TETE5R/16/1621822287.046300.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1621822287.046300", 4 | "text": "GUIをやろうと思いhaskell-giを試していますが、HelloWorld以上のことができません。具体的にはテキストボックスが使えていません。Gtk.EntryやGtk.TextViewでテキストボックスを設置することはできましたが、実際に入力された値を取り出すことができません。何か参考になるようなサイトをご存知でしたらご教示頂きたく。公式サイトを見ましたが構文だけで実際にどうコーディングすればいいのかわかりませんでした。公式サイトのexamplesも見てみましたが、参考になりそうなコードはありませんでした(見つけられませんでした)。teratailで質問しましたが、まだ出来るようになっていません。", 5 | "user": "UFPRHDT8X", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1622078998.049000", 10 | "text": "Entryから値を取り出すことができました。\n``` button <- new Gtk.Button [ #label := \"Run\" ]\n\n on button #clicked (do\n buffer <- Gtk.entryGetBuffer entry\n buffer2 <- Gtk.entryBufferGetText buffer\n set msg [ #sensitive := False, #label := buffer2 ]\n )\n\n #add box button```\n\nお騒がせしました。", 11 | "user": "UFPRHDT8X", 12 | "type": "message" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CR2TETE5R/16/1625325113.093000.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1625325113.093000", 4 | "text": "すみません\narrowをproc?記法を使わないで書くとKleisli const が大量に出てきてしまうのですがこれは回避する方法があるのでしょうか?", 5 | "user": "U018KEA7Y83", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1625334888.093100", 10 | "text": "アロー記法 (Arrow notation) ですね。アロー記法に詳しくないので先に確認したいのですが、アロー記法を使うと `Kleisli` `const` って減りますか?\n先の例を書き換えてみると\n\n```main = runKleisli (proc a -> do\n l <- Kleisli (const getLine) -< a \n Kleisli print -< l) ()```\nになって、`Kleisli` や `const` は減らせなかったので、やり方があれば教えていただきたいです。", 11 | "user": "U578W9676", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1625373685.093600", 16 | "text": "確かにそうですね\nすみません\nproc記法はKleisliとかを減らせる記法なんだと勘違いしていました", 17 | "user": "U018KEA7Y83", 18 | "type": "message" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/CR2TETE5R/16/1625874754.096700.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1625874754.096700", 4 | "text": "モナド変換子について質問です。\nモナド変換子は圏論的にはどのように理解すればよいでしょうか?", 5 | "user": "UFMV026NR", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1625890824.097000", 10 | "text": "モナドは圏論的には理解しているつもりですが、モナド変換子については圏論的な理解が及んでおらず、苦戦しています。", 11 | "user": "UFMV026NR", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1625974152.099900", 16 | "text": "モナド間の準同型として理解するのが良いんじゃないでしょうか :raising_hand:\n参考になりそうなリンクを貼っておきます :pray:\n• \n• ", 17 | "user": "U4KPPQW7K", 18 | "type": "message" 19 | }, 20 | { 21 | "ts": "1626073372.100900", 22 | "text": "ありがとうございます。モナド間準同型、ちょっとしっくりこない面もありますが、納得できそうな気がしました。", 23 | "user": "UFMV026NR", 24 | "type": "message" 25 | } 26 | ] -------------------------------------------------------------------------------- /docs/json/CR2TETE5R/17/1626428575.121500.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1626428575.121500", 4 | "text": "すみません cabalでインストールしたmodduleを編集することってできないのでしょうか?", 5 | "user": "U018KEA7Y83", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1626429020.121600", 10 | "text": "hackageからインストールしたパッケージ内のモジュールのことでしたら、基本的にはコンパイルされた状態でインストールされるので難しいです。\n`cabal.project` ファイルで対象のパッケージのソースコードを置いたディレクトリーや、gitリポジトリーを指定する、という形になります。", 11 | "user": "U4LGTMTMK", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1626429637.122100", 16 | "text": "そのまま編集するのは難しいためコピーして編集したファイルをcabalで指定するか直接インポートするということでしょうか?", 17 | "user": "U018KEA7Y83", 18 | "type": "message" 19 | }, 20 | { 21 | "ts": "1626431848.122600", 22 | "text": "そんな感じです!", 23 | "user": "U4LGTMTMK", 24 | "type": "message" 25 | }, 26 | { 27 | "ts": "1626432331.123300", 28 | "text": "理解しました\nありがとうございます", 29 | "user": "U018KEA7Y83", 30 | "type": "message" 31 | } 32 | ] -------------------------------------------------------------------------------- /docs/json/CR2TETE5R/17/1626719646.157000.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1626719646.157000", 4 | "text": "連投すみません\nghcupをインストールして画面に\nTo start a simple repl, run:\n ghci\n\nTo start a new haskell project in the current directory, run:\n cabal init --interactive\n\nTo install other GHC versions and tools, run:\n ghcup tui\nというメッセージが表示されたのですがghcupコマンドが存在しないと言われてしまいます\nどうすればよいでしょうか", 5 | "user": "U018KEA7Y83", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1626719850.157100", 10 | "text": "パスが通っていないのではないでしょうか。\n\n\n\nのように `PATH` 環境変数を設定してみたらどうでしょう。", 11 | "user": "U578W9676", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1626720439.157500", 16 | "text": "できました\nありがとうございました", 17 | "user": "U018KEA7Y83", 18 | "type": "message" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/CR2TETE5R/17/1626814415.163700.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1626814415.163700", 4 | "text": "連投すみません\nstackでインストールしたモジュールがstack内のghciで使えないのですがどうしたらよいでしょうか", 5 | "user": "U018KEA7Y83", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1626823209.164000", 10 | "text": "`stack ghci --package random` という風に `--package` オプションを指定してみてはどうでしょうか。`stack build` が済んでいないパッケージの場合は自動でビルドされます。", 11 | "user": "UGM9F7XQS", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1626881618.164300", 16 | "text": "No local targets specified, so a plain ghci will be started with no\n package hiding or package options.\nと言われてしまいます", 17 | "user": "U018KEA7Y83", 18 | "type": "message" 19 | }, 20 | { 21 | "ts": "1626887878.164500", 22 | "text": "すみません\n何故か今やったらできました ありがとうございます", 23 | "user": "U018KEA7Y83", 24 | "type": "message" 25 | } 26 | ] -------------------------------------------------------------------------------- /docs/json/CR2TETE5R/17/1626928031.165900.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1626928031.165900", 4 | "text": "質問です。以下のコードは、getLineで受け取った文字列の先頭に1文字(今回ならk)だけ付け加えているのですが、先頭にではなく末尾に付け加えたいと思っています。`:` の逆バージョンのような簡潔な表現はないのでしょうか?\n```main=getLine>>=putStrLn.(:)'k'```\n", 5 | "user": "U024U0DCJ3T", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1626930295.166000", 10 | "text": "<@U024U0DCJ3T>\n`flip (:)` を用いるのはいかがでしょうか?", 11 | "user": "U021XMH7NDT", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1626930561.166200", 16 | "text": "そのような関数はsnocと名付けられることが多く、textやbytestringにはあります\nしかしListには標準では定義されてないようです\n多分、リスト全部辿って入れないといけないので++で遅いことをプログラマに自覚させたいのでしょう", 17 | "user": "U57CUMWQ6", 18 | "type": "message" 19 | }, 20 | { 21 | "ts": "1626930946.166500", 22 | "text": "<@U021XMH7NDT>\nちなみにflip用いるとどんな表現になりそうですかね...?", 23 | "user": "U024U0DCJ3T", 24 | "type": "message" 25 | } 26 | ] -------------------------------------------------------------------------------- /docs/json/CR2TETE5R/18/1631596292.017900.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1631596292.017900", 4 | "text": "`stack.yaml.lock` に関する質問です。\n`stack.yaml` を更新したのに、ビルドで `stack.yaml.lock` を更新するのを忘れて、またPRを出し直すことがたまにあります。\nよって、CircleCIなどのCIツールでそれを抑止したいです。\n今私が主に使っているのはCircleCIです。\n例えばJavaScriptのパッケージマネージャのyarnには `yarn install --frozen-lockfile` というオプションがあり、lockファイルの更新が発生しようとするとエラーになってくれます。\nこれをCIのコマンドに追加していればCIで教えてくれるわけです。\nstackにも似たような機能があればそれで問題ないので、一通り探したのですが見つかりませんでした。\n`stack --lock-file read-only build` は本当にread onlyになるだけでlockファイルとの矛盾があっても関係ないようです。\nどなたかこういった機能が存在するかご存知でしょうか?\nもしくは、このミスを抑止する他の方法があればお聞きしたいです。", 5 | "user": "U57CUMWQ6", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1631601146.018200", 10 | "text": "機能は聞いたことないですが、こういう場合、CI/CD で git diff などをして差分があればエラーみたいにはしたりしてます", 11 | "user": "U56L7EVNY", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1631601617.018400", 16 | "text": "なるほど…", 17 | "user": "U57CUMWQ6", 18 | "type": "message" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/CR2TETE5R/18/1636821329.023600.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1636821329.023600", 4 | "text": "ghc-9.2.1 を試してみたいのですが、方法がわかりません。\n誰か助けてください。", 5 | "user": "U01VCS5MBU3", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1636826437.023700", 10 | "text": "stack であれば stack.yaml を `resolver: ghc-9.2.1` とすれば一応利用できるよ", 11 | "user": "U56L7EVNY", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1636826721.023900", 16 | "text": "おお!\nすごい!\nありがとうございます!!!!", 17 | "user": "U01VCS5MBU3", 18 | "type": "message" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/CR2TETE5R/18/1636987155.030700.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1636987155.030700", 4 | "text": "`(/=)` に独自実装を与えられなくなる予定とのことですが、これって効率的には問題ないんですか? 等しくないと分かれば早く抜けられるケースもある気もしますが。", 5 | "user": "U5LEE6C1J", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1636989730.031200", 10 | "text": "「早く抜ける」振る舞いは `(==)` でも同様に記述すべきではないですか?Twitterに一貫性のない実装の例がありました(皮肉にも書いた人は/=を残すべきだと主張しているようですが) ", 11 | "user": "U4KUNQF9N", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1637070619.035700", 16 | "text": "あー、確かに、「 `True` を返して早く抜ける」と「 `False` を返して早く抜ける」の二つのパターンがあって、それを入れ替えるだけですもんね(余談: その呟きは私の TL にも回ってきたんですが画像だけ見て「こんなのがあるからダメだよ」と言ってると思ってました)", 17 | "user": "U5LEE6C1J", 18 | "type": "message" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/CR2TETE5R/18/1637117405.037900.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1637117405.037900", 4 | "text": "再帰関数って再起しすぎると関数のスタックがオーバーフローしたりしないのでしょうか", 5 | "user": "U02M9636PFV", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1637117686.038000", 10 | "text": "一言で言うとします。(Haskell固有の詳しい回答はちゃんと説明できる自信がないので他の人にお願いしたい....)", 11 | "user": "U4LGTMTMK", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1637121260.038300", 16 | "text": "`f n = if n == 0 then 0 else f (n - 1) + 1` このような関数は、`+ 1` を計算するためにスタックを消費するのでスタックオーバーフローします。`f n = if n == 0 then 0 else f (n - 1)`` の場合はその必要がないのでオーバーフローを避けられます(末尾再帰)", 17 | "user": "U4KUNQF9N", 18 | "type": "message" 19 | }, 20 | { 21 | "ts": "1637124164.038600", 22 | "text": "なるほど、戻ってくる必要がないような再帰関数ならスタックを消費しないってことですね", 23 | "user": "U02M9636PFV", 24 | "type": "message" 25 | } 26 | ] -------------------------------------------------------------------------------- /docs/json/CR2TETE5R/19/1638018727.046600.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "質問失礼します.\nRPELで\n```hoge 0 = 0\nhoge 1 = 1\nhoge x = hoge (x-1) + hoge (x-2)```\nを定義する方法はありますか?caseを使うしかないのでしょうか?\nこのように定義すると,単に関数の定義を上書きしているとみなされてしまいます.", 4 | "type": "message", 5 | "ts": "1638018727.046600", 6 | "user": "U01TZ1XM7MG" 7 | }, 8 | { 9 | "text": "`:{` / `:}` コマンドを使うと複数行の定義を書けます。使用例は\n```Prelude> :{\nPrelude| hoge 0 = 0\nPrelude| hoge 1 = 1\nPrelude| hoge x = hoge (x-1) + hoge (x-2)\nPrelude| :}```\nという感じです。", 10 | "type": "message", 11 | "ts": "1638019253.046800", 12 | "user": "UGM9F7XQS" 13 | }, 14 | { 15 | "text": "複数行定義とはそういうことでしたか!\nありがとうございました.", 16 | "type": "message", 17 | "ts": "1638019626.047000", 18 | "user": "U01TZ1XM7MG" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/CR2TETE5R/19/1639027158.069100.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "`flip (.)` の名称として一番よく使われているものってなんでしょうか", 4 | "type": "message", 5 | "ts": "1639027158.069100", 6 | "user": "U015L5JEP8D" 7 | }, 8 | { 9 | "text": "`(>>>)` ?", 10 | "type": "message", 11 | "ts": "1639031756.069600", 12 | "user": "U578W9676" 13 | }, 14 | { 15 | "text": "`Control.Category` に定義されている、`flip (.)` と同等の演算子です。\n\n", 16 | "type": "message", 17 | "ts": "1639031944.069800", 18 | "user": "U578W9676" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/CR2TETE5R/19/1639064116.075200.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "`$` と`.`の使い分けのポイントはありますでしょうか?\n以下のような例ではどちらの書き方も可能で結果も同じになります。\n```list :: [Int]\nlist = [1..3]\nf :: Int\nf = sum . map (+2) $ list\ng :: Int\ng = sum $ map (+2) list```\nhaskellの拡張機能のインテリセンスも特に何もサジェストしてくれないので好みでいい感じなのでしょうか。", 4 | "type": "message", 5 | "ts": "1639064116.075200", 6 | "user": "U02PHQ2D9D0" 7 | }, 8 | { 9 | "text": "こちらの例に関して言えば好みでいいと思います!", 10 | "type": "message", 11 | "ts": "1639092022.075300", 12 | "user": "U4LGTMTMK" 13 | }, 14 | { 15 | "text": "ありがとうございます!", 16 | "type": "message", 17 | "ts": "1639185182.075600", 18 | "user": "U02PHQ2D9D0" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/CR2TETE5R/19/1640875616.107200.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "Haskellで、MonadThrowのthrowMをhspecでテストするときにcatchしたいのですが、いうならばshouldcatchのような関数はありますか?", 4 | "type": "message", 5 | "ts": "1640875616.107200", 6 | "user": "UQERMQX8W" 7 | }, 8 | { 9 | "text": "`catch` するよりも下記のいずれかの方法で `Either` に変換するのがおすすめです。 `shouldCatch` が Hspecにないのもそういう背景でしょう。\n1. `MonadCatch` のインスタンスを加えれば `try` を使って `m (Either SomeException a)` に変換できます。まぁ、テストであれば `IO` の `try` を使うのでもいいでしょう。\n2. 実は `Either SomeException` も `MonadThrow` のインスタンスなので、 `Either` だけでよいのであればそれでも :ok: です。\n3. また、この `Either SomeException` のMonad Transformer版、 `CatchT` というのもあります。\n先日3. の方法を使ってテストを書いたので参考までに例として共有します。\n", 10 | "type": "message", 11 | "ts": "1640910099.107300", 12 | "user": "U4LGTMTMK" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CR2TETE5R/19/1641006950.108400.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "いまLinux環境にHaskellのツール一式を導入したいとおもったら何を使うのがよさげですか", 4 | "type": "message", 5 | "ts": "1641006950.108400", 6 | "user": "U015L5JEP8D" 7 | }, 8 | { 9 | "text": "何はともあれ GHCup でしょうか。 パッケージ管理にStackを使うのであれ、cabal-installを使うのであれ、とりあえず\n\n\n\nの手順に従って GHCupをインストールすれば、そのほかのツール (GHC, cabal-install, Stack, HLS) は\n\n```$ ghcup install <tool-name> <version-specifier>```\nで自由にインストールできるので。", 10 | "type": "message", 11 | "ts": "1641011008.113700", 12 | "user": "UL1HFJATE" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CR2TETE5R/19/1641729546.006600.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "Haskellの型検査の仕組みについて勉強したいのですが、何か参考になる文献はありますか?", 4 | "type": "message", 5 | "ts": "1641729546.006600", 6 | "user": "U02CE9YGEAU" 7 | }, 8 | { 9 | "text": "\"Typing Haskell in Haskell\"という論文があります。HaskellのコードでHaskellの型検査を実装する話になっていて、読みやすいと思います。", 10 | "type": "message", 11 | "ts": "1641735936.006700", 12 | "user": "U7907NMGF" 13 | }, 14 | { 15 | "text": "すみません、返信が遅れました。\nありがとうございます。読んでみます。", 16 | "type": "message", 17 | "ts": "1642049828.017000", 18 | "user": "U02CE9YGEAU" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/CR2TETE5R/19/1641915779.016200.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "stack installでcryptoniteのインストールをしたのですが\nCould not load module ‘Crypto.Hash’\n It is a member of the hidden package ‘cryptonite-0.29’.\n Perhaps you need to add ‘cryptonite’ to the build-depends in your .cabal file.\n Use -v (or `:set -v` in ghci) to see a list of the files searched for.\n |\n4 | import Crypto.Hash\nと出てしまい、ロードできません\n初歩的な質問で申し訳ないのですが次に何をすれば良いのか教えてもらえないでしょうか?", 4 | "type": "message", 5 | "ts": "1641915779.016200", 6 | "user": "U018KEA7Y83" 7 | }, 8 | { 9 | "text": "cabalファイルがあるプロジェクトの中で使おうとしている、ということであれば\n> Perhaps you need to add ‘cryptonite’ to the build-depends in your .cabal file.\nのとおりcabalファイルかpackage.yamlの依存パッケージの一覧にcryptoniteを追加してください。", 10 | "type": "message", 11 | "ts": "1641945101.016300", 12 | "user": "U4LGTMTMK" 13 | }, 14 | { 15 | "text": "その通りにしたら解決しました\nありがとうございます", 16 | "type": "message", 17 | "ts": "1642004666.016700", 18 | "user": "U018KEA7Y83" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/CR2TETE5R/20/1649116984.990659.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "NoFieldSelectorsについての質問です\n伝統的なフィールドにデータ名をプレフィクスに付けておくデータ型定義があるファイルを指定して、プレフィクスなしにするマイグレーションツールはありますか?\n単に削除だけではなく大文字小文字変換もしないといけないので少し気後れします\n無ければ手で頑張って書き換えるか、マイグレーションツールを自作します", 4 | "type": "message", 5 | "ts": "1649116984.990659", 6 | "user": "U57CUMWQ6" 7 | }, 8 | { 9 | "text": " を使ってみては?", 10 | "type": "message", 11 | "ts": "1649122737.083729", 12 | "user": "U4KUNQF9N" 13 | }, 14 | { 15 | "text": "Retrieはたまにリファクタリングに使っているのですが、\nこれの単純なadhocルールでは大量にあるdata定義を弄るのは難しいかなと思ってました。\nやるなら大量にadhocルールを書く必要があり、\nそれなら手書きで置換するのと大差ないかなと。\nRetrieの私の知らない使い方があるなら知りたいです。", 16 | "type": "message", 17 | "ts": "1649123228.927619", 18 | "user": "U57CUMWQ6" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/CR2TETE5R/20/1649171768.830059.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "```data Element x = Group [x] | Individual x\n\ngroupMached :: x => (x -> Bool) -> [x] -> [Element x]\ngroupMached function list = ????\n\ngroupMached odd [1,4,5,1,3] -- 結果 [Group [1], Individual 4, Group [5,1,3]]```\nリストの要素の中でfunctionによってTrueになり,隣接している者同士でグループを作る関数を定義しようとしています.なかなか思いつきません.ご教示いただけると嬉しいです.", 4 | "type": "message", 5 | "ts": "1649171768.830059", 6 | "user": "U01TZ1XM7MG" 7 | }, 8 | { 9 | "text": "全く同じではないですが、似たようなことをしているであろう `groupBy` 関数が参考になると思います。\n\nリンク先の右端にある「Source」ボタンをクリックするとソースコードが見えます。", 10 | "type": "message", 11 | "ts": "1649203152.747759", 12 | "user": "U4LGTMTMK" 13 | }, 14 | { 15 | "text": "ありがとうございます!どう表現したらいいのかわからない部分がちょうど実装されていました.", 16 | "type": "message", 17 | "ts": "1649252513.828609", 18 | "user": "U01TZ1XM7MG" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/CR2TETE5R/21/1653569189.154239.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "→ コードテストでは失敗、提出すると AC でした。\n(たぶん) アルゴ式側の問題のようなので (運営の方に) 質問してみます m(_ _)m", 4 | "type": "message", 5 | "ts": "1653569189.154239", 6 | "user": "U03H9PH8FRP" 7 | }, 8 | { 9 | "text": "コードテストだと標準入力が空かも?ですかね", 10 | "type": "message", 11 | "ts": "1653570017.263719", 12 | "user": "U4L0B71L1" 13 | }, 14 | { 15 | "text": "入力が空欄でした…… ありがとうございます!", 16 | "type": "message", 17 | "ts": "1653570372.113199", 18 | "user": "U03H9PH8FRP" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/CR2TETE5R/21/1653782439.713629.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "現在haskell で gmail の新着を imap で取得し、tmux のステータスバーに表示するプログラムを常用しております。oauth2.0 認証に変更したいのですが、参考にすべきサンプルコード等を探しています。参考情報等ご教示いただけると助かります。", 4 | "type": "message", 5 | "ts": "1653782439.713629", 6 | "user": "U03DNG36U67" 7 | }, 8 | { 9 | "text": "質問の補足として、今回使用しているコードは以下のとおりです。\n\nまた、検討の経緯は、gmailが5月30日からユーザー名とパスワードのみでログインするアプリがブロックされるとの情報によるものでした。しかし、現時点で、これまでどおり情報取得ができているため、急いで認証方式を変更する必要はないようです。\n\n```import Network.HaskellNet.IMAP.SSL\ngetMail = forever $ do\n conn <-connectIMAPSSLWithSettings \"\" defaultSettingsIMAPSSL { sslMaxLineLength = 100000 } \n id <- getEnv \"IMAP_USER\"\n pass <- getEnv \"IMAP_PASS\"\n login conn id pass\n [(_, msgNo)] <- status conn \"INBOX\" [UNSEEN]\n logout conn\n print msgNo\n threadDelay $ 5 × 1000 × 1000```", 10 | "type": "message", 11 | "ts": "1654086829.602029", 12 | "user": "U03DNG36U67" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CR2TETE5R/21/1654687913.448859.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "`hoogle` で検索すれば型は出て来ますが、定義は出せないのでしょうか", 4 | "type": "message", 5 | "ts": "1654687913.448859", 6 | "user": "U03H9PH8FRP" 7 | }, 8 | { 9 | "text": "`hoogle` にそんな機能はないと思いますし、そうしたことができる他のコマンドも聞いたことはないです。多分、関数の定義は想像されているものよりずっと大きくなることもありますし、定義を出そうという発想にはあまりならないのではないかと思います。\n一応、Hackageにあるのを始めhaddockが生成するドキュメントでは各関数のソースコードが読めるリンク(右側にある「Sources」と書かれた箇所)もついていますので、Hackageのドキュメントを `hoogle search -j -n1 print | jq .[].url` などで引いてそれを経由して取ってくるコマンドを書けばできるんじゃないかと思います。", 10 | "type": "message", 11 | "ts": "1654841086.613759", 12 | "user": "U4LGTMTMK" 13 | }, 14 | { 15 | "text": "おおおありがとうございます! `Source` ボタンを見逃していました。 URL を取ってくるやつも 。活かしてみようと思います。", 16 | "type": "message", 17 | "ts": "1654866193.133249", 18 | "user": "U03H9PH8FRP" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/CR2TETE5R/21/1658526015.580989.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "<#C7Y71415W|math> に投げるか迷ったのですがこちらで。\nHask圏が圏にならないという話をうけて、それでは代わりになる圏は今のところ考えられているのでしょうか?", 4 | "type": "message", 5 | "ts": "1658526015.580989", 6 | "user": "UFMV026NR" 7 | }, 8 | { 9 | "text": "あれから調べてみましたがわかりませんでした。\n圏論の知識も不足しているのでもう少し勉強してみます。", 10 | "type": "message", 11 | "ts": "1659573946.431739", 12 | "user": "UFMV026NR" 13 | }, 14 | { 15 | "text": "What is the Category for Haskell?\n\n\n私は理解できていませんが、こういう資料はありました。", 16 | "type": "message", 17 | "ts": "1659579733.444539", 18 | "user": "U578W9676" 19 | }, 20 | { 21 | "text": "ありがとうございます。\n返事が遅れてしまい申し訳ありません。", 22 | "type": "message", 23 | "ts": "1660654648.600779", 24 | "user": "UFMV026NR" 25 | } 26 | ] -------------------------------------------------------------------------------- /docs/json/CR2TETE5R/21/1660043376.546839.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "Yesodプロジェクトのセットアップについての質問です。\n\nこちらの手順に従ってセットアップを試みると、Progress 4/16 fsnotifyというところで止まり、先に進まなくなります。\nかなり長く放置していても一向に進む様子がありません。\nまた、複数回試していますが、同じことになります。(今も放置中です)\n環境はWindows11で、GHCやStackはghcup経由で入れています。\nstackのバージョンは 2.7.5のようです。GHCのバージョンは普段使ってるものは8.10.7です。(Yesodのセットアップの際にプロジェクト限定のGHCがインストールされているのなら、違うバージョンが動作してるのかもしれません。まだ初心者なためあまり良くわかっておりません)\nもし誰か解決策などご存じの方いましたら、お教えいただけると幸いです。", 4 | "type": "message", 5 | "ts": "1660043376.546839", 6 | "user": "U01K57PCEH2" 7 | }, 8 | { 9 | "text": "根本的な解決策の提示では無いので申し訳ないのですが、もしWSL2ではなくてWindowsネイティブでやろうとしているならば、WSL2を使ったほうが楽です", 10 | "type": "message", 11 | "ts": "1660048884.448299", 12 | "user": "U57CUMWQ6" 13 | }, 14 | { 15 | "text": "なるほど……わかりました。ありがとうございます", 16 | "type": "message", 17 | "ts": "1660048975.727709", 18 | "user": "U01K57PCEH2" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/CR2TETE5R/21/1662857005.674419.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "ここでの質問が適切でなければ申し訳ありません\nplutusのproject内でcabal update やcabal buildをすると\nfatal : reference is not a tree: f827a4321e42f528e25f6079f7af3eb18f10d391\nというエラーが出てしまうのですが、\nどう解決したら良いでしょうか?\nもし不適切でしたらcabal updateが行っていることを教えていただけないでしょうか?", 4 | "type": "message", 5 | "ts": "1662857005.674419", 6 | "user": "U018KEA7Y83" 7 | }, 8 | { 9 | "text": "そのエラーはgitがコミットが見つからないというエラーです。主に理由は二つあります\n1. gitはshallowのcloneを行なっていて、指定されたbranchにそのコミットは存在しない。\n2. 履歴が上書きされて指定されたコミットはもう存在しない。\n理由1.だったら指定されたブランチかコミットを更新して、理由2の場合はコミットを更新したら大体解決出来ます。\n\nどのパッケージが行けないかは`grep -R`や`git grep`で上記のコミットハッシュを検索したら更新すべき行は分かるはずです。", 10 | "type": "message", 11 | "ts": "1662877073.608749", 12 | "user": "U01CFSSPZHB" 13 | }, 14 | { 15 | "text": "返信ありがとうございます\nコミットハッシュをgrepで検索しても何も出てこないのですがどうすればいいでしょうか?", 16 | "type": "message", 17 | "ts": "1662932838.931029", 18 | "user": "U018KEA7Y83" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/CR2TETE5R/22/1667222331.007019.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "と思いきや、今コンパイルが通りました。 `Text.ParseCombinators.Parsec` の代わりに `Text.Parsec` や `Text.Parsec.Text` を import したら良かったみたいです……?\n大分怪しいですが進んでみます……! ()", 4 | "type": "message", 5 | "ts": "1667222331.007019", 6 | "user": "U03H9PH8FRP" 7 | }, 8 | { 9 | "text": "えっ、そんな具体的なエラーに当たって悩んでいらしたんですか!そういうときはそのエラーについて質問いただけたほうが答えやすいです。\nちなみにお気づきの通り、 `Text.ParserCombinators.Parsec` というモジュールは古いバージョンのもので、もう使えなくても不思議じゃないです。", 10 | "type": "message", 11 | "ts": "1667222799.764489", 12 | "user": "U4LGTMTMK" 13 | }, 14 | { 15 | "text": "真の問題が分かっていませんでした。次があればリポジトリを丸投げしますね ()\nいつも丁寧にありがとうございます。どうぞ今後もよろしくお願いします _(._.)_", 16 | "type": "message", 17 | "ts": "1667223206.579429", 18 | "user": "U03H9PH8FRP" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/CR2TETE5R/22/1671020744.415489.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "はじめまして。プログラミングHaskell第2版を読み始めました。1章のqsortについて早速質問させてください。\n```qsort[]=[]\nqsort(x;xs)=qsort smaller ++[x]++qsort larger\n where\n smaller = [a | a<- xs,a<=x]\n larger = [b | b<- xs,b>x]```\nでqsortを定義していますが、この定義はGHCiに直接書き込む物ですか?", 4 | "type": "message", 5 | "ts": "1671020744.415489", 6 | "user": "U026S0BCF3J" 7 | }, 8 | { 9 | "text": "GHCiに直接打つ場合は、 `:{` と `:}` で囲うとうまく行きます:\n\n```:{\nqsort[]=[]\nqsort(x:xs)=qsort smaller ++[x]++qsort larger\n where\n smaller = [a | a<- xs,a<=x]\n larger = [b | b<- xs,b>x]\n:}```\nなお、 `x;xs` ではなく `x:xs` と、セミコロンではなくコロンを使う点にご注意ください。", 10 | "type": "message", 11 | "ts": "1671024103.600929", 12 | "user": "U4LGTMTMK" 13 | }, 14 | { 15 | "text": "ありがとうございます。聞いてよかったです。", 16 | "type": "message", 17 | "ts": "1671085880.580829", 18 | "user": "U026S0BCF3J" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/CR2TETE5R/26/1735495331.934659.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1735495331.934659", 4 | "text": "Haskellのドキュメントは何処にあるんですか?\n\nhaskell orgのDocumentationは資料集みたいな感じでしたし…", 5 | "type": "message", 6 | "user": "U087F07PPFS" 7 | }, 8 | { 9 | "ts": "1735514128.543929", 10 | "text": "Haskellのなんのドキュメントを読みたいのかわからないので想定できるものを一通り挙げておきます。\n\nライブラリーのドキュメントのことでしたら から該当のパッケージを検索すれば読めます。\nひょっとしたら何も追加でインストールしなくても使える、GHCに添付されているパッケージを探していらっしゃるのかもしれないその名前も挙げておくと、主に base というパッケージです。\nそれから、何も `import` しなくても使えるモジュールは `Prelude` と呼ばれています。baseのパッケージのページからページ内検索すれば見つかるはずです。\n\nもし単純に「Haskellの入門記事みたいなのが読みたい」という状況であれば、それこそ「資料集みたいな」と思われたであろう、 に列挙されている「Introductory Books for Learning Haskell」の節から無料のものや有料のものを漁るか、日本語でググってよそを当たってください。入門であれば日本語でも十分なものがあるはずです。残念ながら「公式チュートリアル」みたいなものは日本語でも英語でもありません。\n\n最後に。GHC自体のドキュメントについてはtakenobu-hsさんが にまとめてくださっています。", 11 | "type": "message", 12 | "user": "U4LGTMTMK" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CR4U9PBLL/3/1667265132.796109.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "Hi :wave:\nIs there an appropriate channel to post a Haskell-related job opening to?", 4 | "type": "message", 5 | "ts": "1667265132.796109", 6 | "user": "U038R6FM96G" 7 | }, 8 | { 9 | "text": "You may post Haskell-related job to <#C4M4TT8JJ|random> :+1:", 10 | "type": "message", 11 | "ts": "1667266933.147949", 12 | "user": "U4L0B71L1" 13 | }, 14 | { 15 | "text": "thanks!", 16 | "type": "message", 17 | "ts": "1667266958.913759", 18 | "user": "U038R6FM96G" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/CUPBC8WCE/30/1611378500.009300.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1611378500.009300", 4 | "text": "ディバムです。今からHaskell Redditにポストした二つのYouTubeの動画を見ると思います。", 5 | "user": "U5U5RDTA4", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1611378541.009500", 10 | "text": "\n\n", 11 | "user": "U5U5RDTA4", 12 | "type": "message" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CUPBC8WCE/30/1611379058.011000.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1611379058.011000", 4 | "text": "雑談用のNeWorkでやってます。\nまだ登録してない方は からどうぞ。\n登録済みの方は からログインを!\n使い方がちょっと分かりづらいので の注意事項などをご覧ください", 5 | "user": "U4LGTMTMK", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1611379095.011300", 10 | "text": "招待リンクの制限時間が撤廃されたっぽい! :tada:", 11 | "user": "U4LGTMTMK", 12 | "type": "message" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CUPBC8WCE/30/1611403875.022800.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1611403875.022800", 4 | "text": "次回のもくもく会運営を募集します!自動化のおかげで作業に注力できます!\n", 5 | "user": "U8JGMG1QT", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1611453688.023000", 10 | "text": "1/30, 31 いけますー :woman-raising-hand:", 11 | "user": "U4KPPQW7K", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1611459759.023200", 16 | "text": "ありがとうございます!ではお願いしますー!", 17 | "user": "U8JGMG1QT", 18 | "type": "message" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/CUPBC8WCE/32/1613294088.093400.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1613294088.093400", 4 | "text": "API実装を進めDB周りに着手しました.(権限周りで苦闘中...)\n前回は何の問題もなく動いたのにな...", 5 | "user": "U8JGMG1QT", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1613300558.094900", 10 | "text": "原因がわかりました.今回初めてData.Yaml.Configを使ってDB設定をyamlから読むようにしたのですが,そこで使った環境変数名が既存のものと重複して正しく設定できていなかった模様", 11 | "user": "U8JGMG1QT", 12 | "type": "message" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CUPBC8WCE/32/1613297397.094300.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1613297397.094300", 4 | "text": "次回の運営決めたい!来週土日どちらか空いている方!\n", 5 | "user": "U4LGTMTMK", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1613391743.095300", 10 | "text": "次回は個人的な都合で土曜日にしたいのと、そろそろやり方を改めたいのでその修正のために私がやります。\n(次回の作業がslack-logの件だけで終わらないことを祈る!)", 11 | "user": "U4LGTMTMK", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1613393850.096900", 16 | "text": "またカレンダーに登録するの忘れてた。危ない危ない。", 17 | "user": "U4LGTMTMK", 18 | "type": "message" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/CUPBC8WCE/32/1613793888.001900.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1613793888.001900", 4 | "text": "自分用に自動ビルドしてる Haskell 用 Dockerfile が最近調子悪いので整理しようかと考えてます\n", 5 | "user": "U56L7EVNY", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1613805354.006700", 10 | "text": "TravisCIで動かしてたけど、なんか無料クレジットを使い切って止まってた。GitHub Actions に写すか", 11 | "user": "U56L7EVNY", 12 | "type": "message" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CUPBC8WCE/32/1614416432.007400.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1614416432.007400", 4 | "text": "", 5 | "user": null, 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1614515457.015700", 10 | "text": "おお、誰も反応なしか。 :disappointed:\n開催する日に空いてたら参加する感じなんですかねー。\nあと、よくよく考えたら別に参加者じゃない人が投票しても全く問題ない(というか、してもらわないと困る)ので次回はそこを強調しよう。\nとりあえず次回は日曜日にします。", 11 | "user": "U4LGTMTMK", 12 | "type": "message" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CUPBC8WCE/32/1615107648.030300.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1615107648.030300", 4 | "text": "", 5 | "user": null, 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1615203648.036400", 10 | "text": "土曜日にしますね。", 11 | "user": "U4LGTMTMK", 12 | "type": "message" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CUPBC8WCE/33/1615626020.064800.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1615626020.064800", 4 | "text": "", 5 | "user": null, 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1615811836.073100", 10 | "text": "日曜日にします", 11 | "user": "U4LGTMTMK", 12 | "type": "message" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CUPBC8WCE/34/1618131754.059200.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1618131754.059200", 4 | "text": "Haskell Day のしごとはちょっとで、これ ↓ の続きをしてました\n", 5 | "user": "U4L0B71L1", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1618131803.059500", 10 | "text": "良い機会なので。Haskell Dayについて、何かしらアップデートを共有していただきたいです :pray:", 11 | "user": "U4LGTMTMK", 12 | "type": "message" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CUPBC8WCE/35/1619859762.084500.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1619859762.084500", 4 | "text": "なんかWindows Terminalの設定に夢中になっちゃってあまり進みませんでしたが、いつもどおりmakeMistakeToLearnHaskellの続きをやってました。slack-webに来てたPull requestはすでに他の人がマージしてましたが、一応手元でも確認しておきました。", 5 | "user": "U4LGTMTMK", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1619860037.084600", 10 | "text": "というわけで本日の進捗 ", 11 | "user": "U4LGTMTMK", 12 | "type": "message" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CUPBC8WCE/35/1620533060.088000.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1620533060.088000", 4 | "text": "Haskell Day 2021のことと、いつもどおりmakeMistakesToLearnHaskellの続きを書きます。\nstackからcabalに移る件もなるべくやりたいなぁ。", 5 | "user": "U4LGTMTMK", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1620533740.090200", 10 | "text": "その前にお昼ご飯!", 11 | "user": "U4LGTMTMK", 12 | "type": "message" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CUPBC8WCE/36/1623470777.018400.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1623470777.018400", 4 | "text": "松原です。\nHaskellと直接は関係ないですが、GitHub の Personal Access Token でフォーマット変わったから再生成しろって警告出てるので、PAT の棚卸しします。\nまぁ大抵は自作 Haskell アプリケーション関連なので、Haskell アプリの整理も兼ねて。", 5 | "user": "U56L7EVNY", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1623475453.020600", 10 | "text": "ひっさしぶりに `stack build --docker` したらめっちゃ時間かかるw", 11 | "user": "U56L7EVNY", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1623488690.030100", 16 | "text": "自分のPCでちょくちょく使ってるものだけ再生成して、他の PAT は削除しました(そのために GitHub Actions の整理などもした)。", 17 | "user": "U56L7EVNY", 18 | "type": "message" 19 | }, 20 | { 21 | "ts": "1623488808.031300", 22 | "text": "できれば手元の PAT も適宜ローテーションしたい。けど Web View で毎回生成 + 削除するのめんどい。からなんかそういう感じの CLI ツール作れないかなーって妄想し始めました(そういう使い方していいかは怪しいけども。。。)", 23 | "user": "U56L7EVNY", 24 | "type": "message" 25 | } 26 | ] -------------------------------------------------------------------------------- /docs/json/CUPBC8WCE/36/1626512522.069800.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1626512522.069800", 4 | "text": "", 5 | "user": null, 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1626512629.071600", 10 | "text": "祝日だと私は金曜日が良いです", 11 | "user": "U4LGTMTMK", 12 | "type": "message" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CUPBC8WCE/37/1630141411.003700.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1630141411.003700", 4 | "text": ":point_up: のPull requestを送って自己レビューしてます。お昼食べてからなかなかエンジンがかからなかったので延長戦頑張ります。", 5 | "user": "U4LGTMTMK", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1630145343.003800", 10 | "text": "スレッドの追加テスト", 11 | "user": "U4LGTMTMK", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1630145347.004000", 16 | "text": "スレッドの追加テスト2", 17 | "user": "U4LGTMTMK", 18 | "type": "message" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/CUPBC8WCE/38/1633252005.037900.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1633252005.037900", 4 | "text": "(圏論的なarrowと「光陰矢のごとし」を表す :bow_and_arrow: のダブルミーニング emoji reaction)", 5 | "user": "U4LGTMTMK", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1633856955.048200", 10 | "text": "座布団10枚", 11 | "user": "UCM4G8PGW", 12 | "type": "message" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CUPBC8WCE/39/1635671572.015800.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1635671572.015800", 4 | "text": "cabalやったら警告を出しつつもビルドしてくれるはずだし、stackも を参考にすれば結構イケると思います。(でも本文のとおりcabalでやるのをおすすめしますが)", 5 | "user": "U4LGTMTMK", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1635671753.016000", 10 | "text": "ありがとうございます!!\n読んでみます", 11 | "user": "UCM4G8PGW", 12 | "type": "message" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CUPBC8WCE/39/1637583701.031000.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "次回はconnpassで募集している他のオンラインイベントにすでに参加登録しているため登録できませんが参加はします。オンラインイベントだし一部しか参加するつもりないし重複登録はしたいわ", 4 | "type": "message", 5 | "ts": "1637583701.031000", 6 | "user": "U4LGTMTMK" 7 | }, 8 | { 9 | "text": "わかります\n今日も同じ時間にイベント2つあったのですが、アーカイブ動画が残りそうな方をわざわざキャンセルして、もう一方に参加しました", 10 | "type": "message", 11 | "ts": "1637765554.031100", 12 | "user": "UCM4G8PGW" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CUPBC8WCE/40/1642313354.005400.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "最近みんな一人でもくもくとやってる感じですが、 でのボイスチャットも歓迎しますよ!", 4 | "type": "message", 5 | "ts": "1642313354.005400", 6 | "user": "U4LGTMTMK" 7 | }, 8 | { 9 | "text": "なるほど、りょうかいです!ありがとうございます:blush:\n今日は家の中がやかましいので音声なしでやろうと思います。discordには入ってみますね。", 10 | "type": "message", 11 | "ts": "1642313579.005700", 12 | "user": "U02U8AFNSUU" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CUPBC8WCE/42/1645866338.690209.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "Haskell-jp関係の雑務をした後、makeMistakesToLearnHaskellの続きを書いてました。コミットは後ほど", 4 | "type": "message", 5 | "ts": "1645866338.690209", 6 | "user": "U4LGTMTMK" 7 | }, 8 | { 9 | "text": "\n今日はここまで!", 10 | "type": "message", 11 | "ts": "1645866730.241789", 12 | "user": "U4LGTMTMK" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CUPBC8WCE/42/1647161115.369759.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "misoっていうweb frameworkを試そうと思ったんですが、それがnixでbuildするみたいでして…", 4 | "type": "message", 5 | "ts": "1647161115.369759", 6 | "user": "U036M5J21N2" 7 | }, 8 | { 9 | "text": "\nghcjsをためした人によるといまいちなようです。\npurescriptはいいみたいですね。", 10 | "type": "message", 11 | "ts": "1647495413.502119", 12 | "user": "U74KTAG0N" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CUPBC8WCE/43/1648371827.112579.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "Linuxの仮想マシンの開発環境整備を終え、makeMistakesToLearnHaskellでcabalやstackを使ったときの振る舞いをチェックする準備ができました :relieved:", 4 | "type": "message", 5 | "ts": "1648371827.112579", 6 | "user": "U4LGTMTMK" 7 | }, 8 | { 9 | "text": "と、いうわけで早速dockerでcabal/stack installを使ったときの挙動に合わせて更新しました ", 10 | "type": "message", 11 | "ts": "1648374931.867099", 12 | "user": "U4LGTMTMK" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CUPBC8WCE/45/1657357471.681299.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "makeMistakesToLearnHaskellをだらだらと書いていたら終わりました。コミットはまだ!\n投票する候補はおおよそ決まりました。", 4 | "type": "message", 5 | "ts": "1657357471.681299", 6 | "user": "U4LGTMTMK" 7 | }, 8 | { 9 | "text": "やっと書けた... \nもう少し早めに切り上げても良かったですね。cabal replの件がまだ手つかずだし...", 10 | "type": "message", 11 | "ts": "1657373855.010529", 12 | "user": "U4LGTMTMK" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CUPBC8WCE/45/1659858536.150929.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "text": "そろそろ終わります.データ構造を 本家 AtCoder Libraryを見ながらうんうん考えているだけで終わりました. 本家のようにある程度楽に更新を許そうとするとHaskellならordinary persistent structureを使いたい一方,ある程度performance-criticalなので更新O(1)は捨て難くてそうなるとMutable Vectorになってしまうんですが,そうすると延長が難しいんですね…", 4 | "type": "message", 5 | "ts": "1659858536.150929", 6 | "user": "UL1HFJATE" 7 | }, 8 | { 9 | "text": "あと自前の Mutable queue をちょっと進めました", 10 | "type": "message", 11 | "ts": "1659858573.056239", 12 | "user": "UL1HFJATE" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CUPBC8WCE/51/1677402516.537709.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "type": "message", 4 | "user": "U04BD6ZFKQ8", 5 | "ts": "1677402516.537709", 6 | "text": "できたと思った Excercise 3.35 ですが、既存のテストプログラムが一部動かなくなっていて、デバッグしてました。\n誤動作の原因が1つ判明して対策したのですが、あくまでも対症療法という感じです。お恥ずかしい限りです。" 7 | }, 8 | { 9 | "type": "message", 10 | "user": "U4KU9ABL0", 11 | "ts": "1677406198.716359", 12 | "text": "私もデバッグをさきほどやっておりました。とりあえず動くはずのものを commit してあります。御笑覧ください。" 13 | }, 14 | { 15 | "type": "message", 16 | "user": "U04BD6ZFKQ8", 17 | "ts": "1677990555.644039", 18 | "text": "<@U4KU9ABL0> 様、ご連絡いただき誠にありがとうございます。\n返信遅くなりまして誠に申し訳ございません。\n早速参照させていただきます。" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/CUPBC8WCE/54/1685256003.365159.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "type": "message", 4 | "user": "U4KNX0J3A", 5 | "ts": "1685256003.365159", 6 | "text": "とても久しぶりに参加します。elm-compilerの吐くモジュールファイルが特定条件でばかでかくなるバグについてなりゆきで詳しくなってしまったので、修正を目指してなんやかんややります" 7 | }, 8 | { 9 | "type": "message", 10 | "user": "U4KNX0J3A", 11 | "ts": "1685853707.666879", 12 | "text": "先週の続きやっていきます :fire:" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CUPBC8WCE/57/1691226077.651689.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "type": "message", 4 | "user": null, 5 | "ts": "1691226077.651689", 6 | "text": "" 7 | }, 8 | { 9 | "type": "message", 10 | "user": "U4LGTMTMK", 11 | "ts": "1691393649.720339", 12 | "text": "別にこの回参加してないからって投票するのをためらう必要はないのよ。参加するつもりがあるなら押しちゃってください! :pray:" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CUPBC8WCE/58/1694337249.588239.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "type": "message", 4 | "user": "U03H9PH8FRP", 5 | "ts": "1694337249.588239", 6 | "text": " を書きました。後日見てイタかったら消します :melting_face:" 7 | }, 8 | { 9 | "type": "message", 10 | "user": "U584T7GAH", 11 | "ts": "1694365217.439759", 12 | "text": "入水おめでとうございます 記事拝読しました 痛快のうえ為になること多々ありました :tada:" 13 | }, 14 | { 15 | "type": "message", 16 | "user": "U03H9PH8FRP", 17 | "ts": "1694401352.006749", 18 | "text": "ありがとうございます :sob:" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/CUPBC8WCE/61/1701581105.057979.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "type": "message", 4 | "user": "U57CGDBMG", 5 | "ts": "1701581105.057979", 6 | "text": "`cabal install --lib numbers` したら runhaskell でもエラーが出なくなりました。ありがとうございます!\n`--lib` のこと勉強してみます。 :pekorin:" 7 | }, 8 | { 9 | "type": "message", 10 | "user": "U03H9PH8FRP", 11 | "ts": "1701584272.568419", 12 | "text": "今だと cabal スクリプトにしてパッケージを指定してもいいかもしれません: " 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CUPBC8WCE/61/1701596209.153069.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "type": "message", 4 | "user": "U4LGTMTMK", 5 | "ts": "1701596209.153069", 6 | "text": "pushしました " 7 | }, 8 | { 9 | "type": "message", 10 | "user": "U03H9PH8FRP", 11 | "ts": "1701596777.285989", 12 | "text": "この辺り、 Haskell 入門当時にかなり躓きました……!" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CUPBC8WCE/62/1704618619.025449.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1704618619.025449", 4 | "text": "ほぼ進捗ゼロです! :innocent:\n の問題の直し方について調べてました。", 5 | "type": "message", 6 | "user": "U4LGTMTMK" 7 | }, 8 | { 9 | "ts": "1704624329.790519", 10 | "text": "延長戦で対応できたはずです :relieved:", 11 | "type": "message", 12 | "user": "U4LGTMTMK" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CUPBC8WCE/62/1705827914.118109.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1705827914.118109", 4 | "text": "ちょっとだけmakeMistakesToLearnHaskellを進めました。後ほどコミットを共有します。", 5 | "type": "message", 6 | "user": "U4LGTMTMK" 7 | }, 8 | { 9 | "ts": "1705829257.442899", 10 | "text": "本日の成果\n", 11 | "type": "message", 12 | "user": "U4LGTMTMK" 13 | }, 14 | { 15 | "ts": "1705831663.892989", 16 | "text": "cabal replの件もやっぱちょっと進めました。hasmoku以外の時間で進めて、ビルドが通ったので手元のプロジェクトで試したところ、\n```TODO: add support for multiple packages in a directory```\nなるエラーが出ました。cabalさん、同じディレクトリーに複数のcabalファイルがあるとabortしちゃうんですね... :weary:", 17 | "type": "message", 18 | "user": "U4LGTMTMK" 19 | } 20 | ] -------------------------------------------------------------------------------- /docs/json/CUPBC8WCE/63/1706432872.760139.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1706432872.760139", 4 | "text": "今日もちょっとだけ。\n本日のmakeMistakesToLearnHaskellの進捗\n\n\n後、cabalのmultiple-home-unitsについては調べただけです。延長戦で多分起動します", 5 | "type": "message", 6 | "user": "U4LGTMTMK" 7 | }, 8 | { 9 | "ts": "1706437602.660809", 10 | "text": "延長戦で試したレポートです。\ncabal replがmulti home unitをちゃんと扱えるなら「cabal replの件」はもう中止していいんじゃ?と思って試しましたが、残念ながら(?)私の仕事はまだ残っているようです :innocent:\n", 11 | "type": "message", 12 | "user": "U4LGTMTMK" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CUPBC8WCE/63/1707038287.443729.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1707038287.443729", 4 | "text": "うーん、進捗ほぼゼロです... :weary:", 5 | "type": "message", 6 | "user": "U4LGTMTMK" 7 | }, 8 | { 9 | "ts": "1707040772.743669", 10 | "text": "延長戦でここまで書きました。中々いい例が思い浮かばないですね...。既に紹介した関数だけを使うとおおよそ数値の計算とかだけになっちゃいますし\n", 11 | "type": "message", 12 | "user": "U4LGTMTMK" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CUPBC8WCE/63/1707642271.261559.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1707642271.261559", 4 | "text": "makeMistakesToLearnHaskellをちょっとだけ進めました。前回書いた分を全部捨てて書き直そうと決めたくらいですが、詳しい進捗はまた後で!最近この時間はもうパワー不足になってることが多いですね... :weary:", 5 | "type": "message", 6 | "user": "U4LGTMTMK" 7 | }, 8 | { 9 | "ts": "1707646522.026519", 10 | "text": "というわけで今日の進捗。また削除の方が多いくらいになっちゃったけど、その分話をシンプルにできてきたのでよしとしよう\n", 11 | "type": "message", 12 | "user": "U4LGTMTMK" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CUPBC8WCE/64/1710666207.577739.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1710666207.577739", 4 | "text": "cabal replの件は、前々回いじったテストコードの型チェックが通るよう修正しました。\nmakeMistakesToLearnHaskell は、先週作った画像を趣旨に合うよう修正しているところです。ターミナルのスクショを編集するスキルが低くて苦戦してます :sweat:", 5 | "type": "message", 6 | "user": "U4LGTMTMK" 7 | }, 8 | { 9 | "ts": "1710668433.444909", 10 | "text": "というわけで本日のmakeMistakesToLearnHaskellの進捗。InkscapeでPNG出したら画像が小さくなってしまった。まぁいいか。\n", 11 | "type": "message", 12 | "user": "U4LGTMTMK" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CUPBC8WCE/65/1714295037.764729.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1714295037.764729", 4 | "text": ":point_up: に加えてcabal replの件も検討してましたが、あんまり進めませんでした。\nもうちょっとアルゴリズム含めてデータ構造を変えた方が良さそうです。", 5 | "type": "message", 6 | "user": "U4LGTMTMK" 7 | }, 8 | { 9 | "ts": "1714298323.711699", 10 | "text": "と、思ったけどデータ構造まで変える必要はやっぱなさそう", 11 | "type": "message", 12 | "user": "U4LGTMTMK" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CUPBC8WCE/66/1716700855.510459.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1716700855.510459", 4 | "text": "パターンマッチで使えるけど値の定義では使えない構文、といえばasパターンなどですが、値の定義では使えるけどパターンマッチでは使えない構文ってなんかありましたっけ... :thinking_face:", 5 | "type": "message", 6 | "user": "U4LGTMTMK" 7 | }, 8 | { 9 | "ts": "1716701000.224199", 10 | "text": "`TypeApplications` とかか。", 11 | "type": "message", 12 | "user": "U4LGTMTMK" 13 | }, 14 | { 15 | "ts": "1716705297.750529", 16 | "text": "なんか拡張つけないと型注釈 (x :: Int) とかも無理だった気がします", 17 | "type": "message", 18 | "user": "UL1HFJATE" 19 | }, 20 | { 21 | "ts": "1716710563.860659", 22 | "text": "`ScopedTypeVariables` ですかね!確かに!", 23 | "type": "message", 24 | "user": "U4LGTMTMK" 25 | } 26 | ] -------------------------------------------------------------------------------- /docs/json/CUPBC8WCE/67/1718528538.444279.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1718528538.444279", 4 | "text": "結局疲れちゃってmakeMistakesToLearnHaskellの続きしかできませんでした!GHCup v.s. Stackの件は後で!", 5 | "type": "message", 6 | "user": "U4LGTMTMK" 7 | }, 8 | { 9 | "ts": "1718529792.638539", 10 | "text": "本日のmakeMistakesToLearnHaskellの更新 ", 11 | "type": "message", 12 | "user": "U4LGTMTMK" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CUPBC8WCE/67/1720947920.925519.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1720947920.925519", 4 | "text": "makeMistakesToLearnHaskellの課題18の細かい修正ばっかりやってます。延長戦で今日中に終えたい!", 5 | "type": "message", 6 | "user": "U4LGTMTMK" 7 | }, 8 | { 9 | "ts": "1720953534.714219", 10 | "text": "本日の更新です。課題18はひとまずここまでとします!\n", 11 | "type": "message", 12 | "user": "U4LGTMTMK" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CUPBC8WCE/68/1722177583.484919.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1722177583.484919", 4 | "text": "延長戦 とりあえずほしいやつが生えてコンパイル通ったので勝利", 5 | "type": "message", 6 | "user": "U4KNX0J3A" 7 | }, 8 | { 9 | "ts": "1722249360.600959", 10 | "text": "大体求めていた書き方になって満足", 11 | "type": "message", 12 | "user": "U4KNX0J3A" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CUPBC8WCE/68/1722766084.174739.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1722766084.174739", 4 | "text": "毎回思うけど全然恥ずかしくないですよ!胸張ってやりましょうよ!!", 5 | "type": "message", 6 | "user": "U4LGTMTMK" 7 | }, 8 | { 9 | "ts": "1722767060.983739", 10 | "text": "<@U4LGTMTMK>さん、ありがとうございます。もっと胸張ってやれるようになります。", 11 | "type": "message", 12 | "user": "U04BD6ZFKQ8" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CUPBC8WCE/71/1731229750.605809.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1731229750.605809", 4 | "text": "本日のmakeMistakesToLearnHaskellの更新\n\n次回は課題19を微調整して完成させたい。", 5 | "type": "message", 6 | "user": "U4LGTMTMK" 7 | }, 8 | { 9 | "ts": "1731816756.056089", 10 | "text": "19ちゃうわ20じゃ。", 11 | "type": "message", 12 | "user": "U4LGTMTMK" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CUPBC8WCE/71/1732439360.101009.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1732439360.101009", 4 | "text": "\"Notions of computation and monads,\" Moggi, E (1991) 読了 圏論を用いてλ計算の算譜の同値性を一般化するお話 なんだかピンと来なかった 自分の足腰の基礎が弱すぎる\n競プロ典型 90 問 83 日目 - Colorful Graph(★6) なんだ簡単と思ったら TLE ドツボにハマった トホホ 後日出直します", 5 | "type": "message", 6 | "user": "U584T7GAH" 7 | }, 8 | { 9 | "ts": "1732441681.697689", 10 | "text": "この問題これと関係ありそう\n", 11 | "type": "message", 12 | "user": "U08143MUQJ1" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CUPBC8WCE/75/1746346413.791119.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1746346413.791119", 4 | "text": "山本悠滋です。引越作業に追われているので一段落してから昨日進めておいたmakeMistakesToLearnHaskellやHaskell-jp Blogの進捗を共有します。", 5 | "type": "message", 6 | "user": "U4LGTMTMK" 7 | }, 8 | { 9 | "ts": "1746451751.673309", 10 | "text": "昨日のHaskell-jp Blogの進捗\n\nmakeMistakesToLearnHaskellの進捗\n", 11 | "type": "message", 12 | "user": "U4LGTMTMK" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/json/CUPBC8WCE/75/1746954106.095969.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1746954106.095969", 4 | "text": "諸々ちょっとだけやってました。延長戦でもう少し進めてからgit pushします。", 5 | "type": "message", 6 | "user": "U4LGTMTMK" 7 | }, 8 | { 9 | "ts": "1746958702.053989", 10 | "text": "Haskell-jp Blogの進捗: \nmakeMistakesToLearnHaskellの進捗: \n関数型まつりのスライドはほぼ進まず。", 11 | "type": "message", 12 | "user": "U4LGTMTMK" 13 | } 14 | ] -------------------------------------------------------------------------------- /docs/main.css: -------------------------------------------------------------------------------- 1 | @import "https://cdnjs.cloudflare.com/ajax/libs/semantic-ui/2.4.1/semantic.min.css"; 2 | 3 | details summary { 4 | font-size: larger; 5 | } 6 | 7 | .link-to-replies { 8 | display: block; 9 | font-size: smaller; 10 | } 11 | -------------------------------------------------------------------------------- /run.sample.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -eu 4 | 5 | cd "$(dirname "$0")" 6 | 7 | export SLACK_API_TOKEN='' 8 | stack build --exec 'slack-log save' 9 | 10 | git add docs 11 | git commit -m"Slack log update at $(date)" 12 | git push 13 | -------------------------------------------------------------------------------- /slack-log.yaml: -------------------------------------------------------------------------------- 1 | workspaceName: haskell-jp 2 | timeZone: Asia/Tokyo 3 | saveRepliesBefore: "5w" 4 | targetChannels: 5 | CL3AXB1AL: atcoder-lang-updates 6 | CR2TETE5R: beginners 7 | C8KBGEBR7: code-review 8 | C4P499EPQ: english 9 | CR4U9PBLL: english-help 10 | C4LFB6DE0: general 11 | CAXQ09PN2: haskell-day 12 | C011X16H4TS: jclub-heyhey 13 | C7Y71415W: math 14 | C5666B6BB: questions 15 | C4M4TT8JJ: random 16 | C8R0H137H: translation 17 | CCYF8H43A: nix 18 | CD87P78HF: mmlh 19 | CE368SB5G: ghc8x 20 | CGT2Q4KHP: hatchobori-haskell 21 | CM4J6EDHR: icfp 22 | CN3P057K8: haskell-day-sponsor 23 | CUPBC8WCE: mokumoku-online 24 | C014PGG641Z: today-i-learned 25 | GDTFWM8KX: haskell-day-staff 26 | C01LT3YTT3K: sg-tfwh 27 | C028VRTRBRT: sg-ifl-tut 28 | CA5H65L2J: xmonad 29 | templatePaths: 30 | indexPage: templates/index.mustache.html 31 | messagesPage: templates/messages.mustache.html 32 | threadPage: templates/thread.mustache.html 33 | -------------------------------------------------------------------------------- /src/SlackLog/Duration.hs: -------------------------------------------------------------------------------- 1 | {-# LANGUAGE OverloadedStrings #-} 2 | 3 | module SlackLog.Duration where 4 | 5 | import Control.Monad (when) 6 | import qualified Data.Aeson as Json 7 | import qualified Data.Text.Read as TR 8 | import qualified Data.Time.Clock as C 9 | 10 | 11 | newtype Duration = Duration { asNominalDiffTime :: C.NominalDiffTime } 12 | deriving (Eq, Show) 13 | 14 | instance Json.FromJSON Duration where 15 | parseJSON = Json.withText "SlackLog.Duration" $ \t -> either fail pure $ do 16 | (i, left) <- TR.decimal t 17 | when (i < 1) $ Left "duration must be positive" 18 | scale <- 19 | case left of 20 | "m" -> pure 60 21 | "h" -> pure $ 60 * 60 22 | "d" -> pure $ 60 * 60 * 24 23 | "w" -> pure $ 60 * 60 * 24 * 7 24 | other -> Left $ "Unknown scale: " ++ show other 25 | pure . Duration $ fromInteger i * scale 26 | -------------------------------------------------------------------------------- /src/SlackLog/Util.hs: -------------------------------------------------------------------------------- 1 | module SlackLog.Util where 2 | 3 | import qualified Data.Aeson as Json 4 | 5 | 6 | failWhenLeft :: Either String a -> IO a 7 | failWhenLeft = either fail return 8 | 9 | 10 | readJsonFile :: Json.FromJSON a => FilePath -> IO a 11 | readJsonFile path = do 12 | result <- Json.eitherDecodeFileStrict path 13 | case result of 14 | Right tbc -> return tbc 15 | Left err -> fail $ "Error reading \"" ++ path ++ "\"\n" ++ show err 16 | -------------------------------------------------------------------------------- /test/Spec.hs: -------------------------------------------------------------------------------- 1 | {-# OPTIONS_GHC -F -pgmF hspec-discover #-} 2 | -------------------------------------------------------------------------------- /test/Web/Slack/InstancesSpec.hs: -------------------------------------------------------------------------------- 1 | module Web.Slack.InstancesSpec 2 | ( spec 3 | ) where 4 | 5 | 6 | import qualified Data.Aeson as Json 7 | import Test.Hspec 8 | import Test.Hspec.QuickCheck 9 | import qualified Web.Slack.Common as Slack 10 | 11 | import Web.Slack.Instances () 12 | 13 | spec :: Spec 14 | spec = 15 | describe "ToJSON Instance of Slack.Message" $ 16 | prop "the encoded json is decoded as " $ \msg -> do 17 | actual <- either fail return $ Json.eitherDecode $ Json.encode msg 18 | actual `shouldBe` (msg :: Slack.Message) 19 | -------------------------------------------------------------------------------- /test/assets/.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "workspaceName": "haskell-jp", 3 | "timeZone": "Asia/Tokyo", 4 | "targetChannels": {} 5 | } 6 | -------------------------------------------------------------------------------- /test/assets/.groups.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /test/assets/.timestamps.json: -------------------------------------------------------------------------------- 1 | { 2 | "C5666B6BB": "1551278041.055000", 3 | "C8R0H137H": "1546947167.007600", 4 | "CE368SB5G": "1548678432.007700", 5 | "C4LFB6DE0": "1551223425.004300", 6 | "GDTFWM8KX": "1542609822.132700", 7 | "C7Y71415W": "1551102435.000300", 8 | "C8KBGEBR7": "1541988378.000400", 9 | "C4P499EPQ": "1541988313.000400", 10 | "C4M4TT8JJ": "1551316505.045300", 11 | "CAXQ09PN2": "1550727750.001300", 12 | "CD87P78HF": "1546421890.002600", 13 | "CCYF8H43A": "1550023235.000200" 14 | } -------------------------------------------------------------------------------- /test/assets/.users.json: -------------------------------------------------------------------------------- 1 | { 2 | "U12345": "example_user" 3 | } 4 | -------------------------------------------------------------------------------- /test/assets/json/C4M4TT8AA/1.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1547694881.115200", 4 | "text": "Test `searchThreadsAppendedSince`: the first message is before saveSince and has no replies.", 5 | "user": "U11111", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1547694882.115200", 10 | "text": "Test `searchThreadsAppendedSince`: the first message is before saveSince, and the last message is before saveSince too.", 11 | "user": "U12345", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1547694883.115200", 16 | "text": "Test `searchThreadsAppendedSince`: the first message is before saveSince, and the last message is after saveSince.", 17 | "user": "U33333", 18 | "type": "message" 19 | } 20 | ] 21 | -------------------------------------------------------------------------------- /test/assets/json/C4M4TT8AA/1/1547694882.115200.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1547694882.115200", 4 | "text": "Test `searchThreadsAppendedSince`: the first message is before saveSince, and the last message is before saveSince too.", 5 | "user": "U12345", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1547694882.215200", 10 | "text": "2-1 message", 11 | "user": "U12345", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1547694882.315200", 16 | "text": "2-2 message", 17 | "user": "U12356", 18 | "type": "message" 19 | }, 20 | { 21 | "ts": "1547694882.415200", 22 | "text": "2-3 message", 23 | "user": "U12354", 24 | "type": "message" 25 | } 26 | ] 27 | 28 | -------------------------------------------------------------------------------- /test/assets/json/C4M4TT8AA/1/1547694883.115200.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1547694883.115200", 4 | "text": "Test `searchThreadsAppendedSince`: the first message is before saveSince, and the last message is after saveSince.", 5 | "user": "U33333", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1547694883.215200", 10 | "text": "3-1 message", 11 | "user": "U32345", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1547694883.315200", 16 | "text": "3-2 message", 17 | "user": "U32356", 18 | "type": "message" 19 | } 20 | ] 21 | -------------------------------------------------------------------------------- /test/assets/json/C4M4TT8AA/2.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1547694884.115200", 4 | "text": "Test `searchThreadsAppendedSince`: the first message is after saveSince, and the last message is after saveSince.", 5 | "user": "U11111", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1547694885.115200", 10 | "text": "Test `searchThreadsAppendedSince`: the first message is after saveSince and has no replies.", 11 | "user": "U12345", 12 | "type": "message" 13 | } 14 | ] 15 | -------------------------------------------------------------------------------- /test/assets/json/C4M4TT8AA/2/1547694884.115200.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1547694884.115200", 4 | "text": "Test `searchThreadsAppendedSince`: the first message is after saveSince, and the last message is after saveSince.", 5 | "user": "U11111", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1547694994.115200", 10 | "text": "4-1 message", 11 | "user": "U11111", 12 | "type": "message" 13 | } 14 | ] 15 | -------------------------------------------------------------------------------- /test/assets/json/C4M4TT8JJ/35.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1547694881.115200", 4 | "text": "First 7890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", 5 | "user": "U11111", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1547694882.115200", 10 | "text": "これはテストです。\n", 11 | "user": "U12345", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1547694883.115200", 16 | "text": "Last 7890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", 17 | "user": "U33333", 18 | "type": "message" 19 | } 20 | ] 21 | -------------------------------------------------------------------------------- /test/assets/json/C4M4TT8JJ/35/1547694882.115200.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "ts": "1547694882.115200", 4 | "text": "これはテストです。\n", 5 | "user": "U12345", 6 | "type": "message" 7 | }, 8 | { 9 | "ts": "1547694884.115300", 10 | "text": "Reply to *1547694882.115200* 1", 11 | "user": "U11111", 12 | "type": "message" 13 | }, 14 | { 15 | "ts": "1547694884.115320", 16 | "text": "Reply to 1547694882.115200 2\n", 17 | "user": "U11111", 18 | "type": "message" 19 | } 20 | ] 21 | --------------------------------------------------------------------------------