Vinnaren i pepparkakshustävlingen!
2006-01-29, 21:20
  #1
Medlem
Har några frågor till dig dom är vass på SML? PM eller posta isf tack.
Citera
2006-01-29, 23:09
  #2
Medlem
Y0dAs avatar
Ett tips kan vara att skriva frågorna i tråden... är nog lättare att få svar då.
Citera
2006-01-30, 00:16
  #3
Medlem
äppelkakas avatar
Ja, detta är ett diskussionsforum, välkommen hit förresten, men posta frågorna i tråden, annars blir det papperskorgen.

/Moderator
Citera
2006-01-30, 02:14
  #4
Medlem
Kod:
fun testar (c0:real,c1:real) [] = []
| testar (c0:real,c1:real) (x::xs) =
let
    val (_,_,d1) = x
      in
         if((d1>=c0)andalso(d1<c1)) then
	     d1::testar (c0,c1) (xs)
	     else
		 testar (c0,c1) (xs)
             end;

fun collectCarats [] [] = []
| collectCarats (c0::c1::cs) (x::xs) =
  (testar(c0,c1) (x::xs)) :: [];

Jag vill kunna öka värdena i sista raden (testar(c0,c1) till (testar(c1,c2) på ett smidigt sätt.
Cs är en lista med tal i stigande ordning och xs en lista med olika element som ska testas om de ligger mellan c0 och c1.
Citera
2006-02-01, 13:34
  #5
Medlem
Jag programmerade ganska mycket i SML för några år sedan och kommer inte ihåg nånting alls när jag går igenom din kod

Jävligt fin är Meta Language, det kommer jag i alla fall ihåg!
Citera
2007-08-06, 14:42
  #6
Medlem
illicits avatar
Citat:
Ursprungligen postat av Testpelle
Kod:
fun testar (c0:real,c1:real) [] = []
| testar (c0:real,c1:real) (x::xs) =
let
    val (_,_,d1) = x
      in
         if((d1>=c0)andalso(d1<c1)) then
	     d1::testar (c0,c1) (xs)
	     else
		 testar (c0,c1) (xs)
             end;

fun collectCarats [] [] = []
| collectCarats (c0::c1::cs) (x::xs) =
  (testar(c0,c1) (x::xs)) :: [];

Jag vill kunna öka värdena i sista raden (testar(c0,c1) till (testar(c1,c2) på ett smidigt sätt.
Cs är en lista med tal i stigande ordning och xs en lista med olika element som ska testas om de ligger mellan c0 och c1.
Hm, för det första verkar det vara fel på din rekursion i collectCarats eftersom du aldrig gör ett rekursivt anrop till den funktionen i funktionskroppen.

Som jag förstår det vill du ha en lista med de tal som ligger mellan c0 och c1?
Om du bara vill kunna ändra tester(c0,c1) till testar(c1,c2) är det bara att du mönstermatchar ut c2 i collectCarats
| collectCarats(c0::c1::c2::cs)

Om jag var du skulle jag nog titta på högre ordningens funktioner och de inbyggda funktionerna för List-datatypen.

Ifall du vill hitta alla tal som ligger mellan a och b i en lista räcket denna funktion.

fun range(upper, lower, list) =
List.filter (fn x => (x >= upper andalso x <= lower) list;
Citera
2007-08-09, 19:21
  #7
Medlem
Megaforces avatar
Finns det fortfarande kvar? Sist jag programmerade det var nog 1987. Lyckades t.o.m. kompilera SML-intepretatorn så att man kunde köra den under DOS på en 286a med 1,5 Mb minne, fast man fick bara max 64 kb heap vilket gjorde att man bara kunde köra mindre rutiner.
Citera
2007-08-11, 08:55
  #8
Medlem
Muggs avatar
Citat:
Ursprungligen postat av Megaforce
Finns det fortfarande kvar? Sist jag programmerade det var nog 1987. Lyckades t.o.m. kompilera SML-intepretatorn så att man kunde köra den under DOS på en 286a med 1,5 Mb minne, fast man fick bara max 64 kb heap vilket gjorde att man bara kunde köra mindre rutiner.

Läste så sent som år 2000 en kurs i SML på univ. Så nog finns det kvar.
Citera
2007-10-24, 21:33
  #9
Medlem
Läste ML 2003
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback