Haskell är manligt! – Sida 3 – Snack – ungdev Forum

Aviseringar
Rensa alla

Haskell är manligt!


Ämnesstartare

Gifted:

Jag fulade mig brutalt genom att använda rekursion på main-funktionen (den enda funktionen i mitt program f.ö) och användandet av ?-operatorn istället för klassiska if-satser...

Hehe, okej. Kan du visa koden?


   
SvaraCitera
Ämnesstartare

Gifted:

programmet är ju inte direkt snällt för minnet, och skriver till oallokerat minne, men det funkar...

Grattis, du har lyckats stöta på odefinierat beteende i ett enstatementprogram.

Att det är enkelt att skriva oläslig kod med odefinierat beteende brukar inte räknas som en av C:s styrkor.


   
SvaraCitera
Gifted

KID_IS_BACK:

Grattis, du har lyckats stöta på odefinierat beteende i ett enstatementprogram.

Yep.

KID_IS_BACK:

Att det är enkelt att skriva oläslig kod med odefinierat beteende brukar inte räknas som en av C:s styrkor.

Det är sant. Det var tänkt som ett bidrag till obfuscated C code contest.


   
SvaraCitera
Ämnesstartare

Ska vi prata bisarra oneliners så kan Haskell göra det med. rot13:

module Rot13 where
import Char
main :: IO ()
main = interact f

f :: String -> String
f x = if length x == 0 then "" else (if isAlpha (head x) then chr ((ord (head x) - ord 'a' + 13) `mod` 26 + ord 'a') else head x):(f (tail x))

   
SvaraCitera

KID_IS_BACK:

bisarra oneliners


main(a,b){while((a=getchar())+1)putchar((b=64^a&95)&&b<27?a&224|(b+12)%26+1:a);}

   
SvaraCitera
Ämnesstartare

21st Century Adonis:

int main(int a, char **b){while((a=getchar())+1)putchar((b=64^a&95)&&b<27?a&224|(b+12)%26+1:a); return 0;}

fix'd. Att skriva svårläslig kod är ingen ursäkt för att skriva program som inte följer standarden.


   
SvaraCitera

KID_IS_BACK:

fix'd. Att skriva svårläslig kod är ingen ursäkt för att skriva program som inte följer standarden.

nu var ju rubriken "bisarra oneliners"... och

KID_IS_BACK:

Plockar vi bort alla typdeklarationer och kommentarer får vi:

edit: smög sig in ett z...

- - - - - - - - - - - - - - - - - Sammanslagning 1 - - - - - - - - - - - - - - - - -

KID_IS_BACK:

Srsly, hur många hundra rader hade det där tagit i C?

Njae... binary trees är ju ganska standard, men elegans är ju nåt som haskell ligger ganska mycket före i 😀 Minneseffektivitete däremot - och det är därför man använder ocaml.

Hur som helst. Jag kommer ihåg när jag skulle banka in monads. Det var inte kul. alls. Man måste nästan ha en lärare till sånt.


   
SvaraCitera

Har börjat lära mig haskell, det är roligt:

split :: (Eq a) => [a] -> a -> [[a]]
split list item = filter (not . null) $ foldr (\i parts ->
if i == item then []:parts
else (i:(head parts)):(tail parts)
) [[]] list

Hur fan ska man indentera, förresten?


   
SvaraCitera
Ämnesstartare

Tråden låst på grund av inaktivitet


   
SvaraCitera